赞
踩
yum -y install gcc
yum -y install pcre-devel
yum -y install zlib-devel
./configure --prefix=/root/dev/nginx/nginx
make && make install
示例一nginx.conf 简单
#简单配置
# 设置服务器组 localhost可以用ip代替
upstream backend {
ip_hash;
server localhost:9001;
server localhost:9002;
server localhost:9003;
}
server {
listen 8080;
server_name localhost;
location / {
# backend 就是服务器组的名称
proxy_pass http://backend/;
}
}
示例二nginx.conf
#简单了解需要时自己了解
#nginx.conf文件中,添加以下内容(只供参考),这个不能放在http模块里面,否则会报错stream {
# 添加socket转发的代理
upstream client_a {
hash $remote_addr consistent;
# 转发的目的地址和端口
server ip1:6577 weight=5 max_fails=3 fail_timeout=30s;
server ip2:6588 weight=5 max_fails=3 fail_timeout=30s;
}upstream client_b {
hash $remote_addr consistent;
# 转发的目的地址和端口
server ip3:6577 weight=5 max_fails=3 fail_timeout=30s;
server ip4:6588 weight=5 max_fails=3 fail_timeout=30s;
}# 提供转发的服务,即访问localhost:30001,会跳转至代理bss_num_socket指定的转发地址
server {
listen 30001;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass client_a;
access_log /soft/nginx/logs/access.log;
error_log /soft/nginx/logs/error.log;
}
server {
listen 30002;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass client_b;
access_log /soft/nginx/logs/access.log;
error_log /soft/nginx/logs/error.log;
}
}#或者在tcp.d下新建个bss_num_30001.conf文件,然后在nginx.conf引用该文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {}
./nginx #启动
./nginx -s stop #快速停止
./nginx -s quit # 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload #重新加载配置
1.执行命令
vi /usr/lib/systemd/system/nginx.service
2.添加内容
#服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking#主要这几个加粗目录看是否是$Nginx_Home的目录
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true
[Install]
WantedBy=multi-user.target
3.重新加载系统服务
systemctl daemon-reload
4.启动服务
systemctl start nginx.service
5.开机启动
systemctl enable nginx.service
whereis gcc #就是gcc没有安装 查看是否安装
yum -y install gcc #执行命令安装
yum -y install pcre-devel #执行命令安装
yum -y install zlib-devel
如果你想使用openssl 功能,sha1 功能。 那么安装openssl ,sha1 吧
yum install openssl openssl-develinstall perl-Digest-SHA1.x86_64
./configure –with-http_ssl_module #开启ssl 模块 执行
./configure –with-http_stub_status_module #启用“server+status”页,执行
#上面两个命令同时启动可以
./configure --with-http_stub_status_module --with-http_ssl_module
yum -y install gcc automake autoconf libtool make
yum install gcc-c++yum -y install libnl libnl-devel
yum install -y libnfnetlink-devel
yum -y install openssl-devel
yum update glib*
./configure --prefix=/root/dev/keepalived/keepalived
make && make install
#创建目录
mkdir /etc/keepalived#$Keepalived_Home/etc/keepalived/keepalived.conf 文件拷贝到/etc/keepalived里这个文件可以自己生成名称一样就行
#拷贝配置文件
cp $Keepalived_Home/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf#拷贝系统服务 解压keepalived目录下的路径 和 $Keepalived_Home一般不一样除非自定义一样了
cp 解压keepalived目录下的路径/keepalived/etc/init.d/keepalived /etc/init.d/#赋权
chmod -R 775 /etc/init.d/keepalived#拷贝系统日志
cp $Keepalived_Home/etc/sysconfig/keepalived /etc/sysconfig/keepalived
vim /etc/keepalived/keepalived.conf
在文件里追加内容 红颜色表示根据自己文件路径和ip更换进去
############################ 全局配置 #############################
global_defs {
# 定义管理员邮件地址,表示keepalived在发生诸如切换操作时需要发送email通知,以及email发送给哪些邮件地址,可以有多个,每行一个
notification_email {
#设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
########@qq.com
}
#keepalived在发生诸如切换操作时需要发送email通知地址,表示发送通知的邮件源地址是谁
notification_email_from ########@qq.com
#指定发送email的smtp服务器
smtp_server 127.0.0.1
#设置连接smtp server的超时时间
smtp_connect_timeout 30
#运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
router_id node01
}
############################ VRRPD配置 #############################
# 定义nginx_check脚本,脚本执行间隔10秒,权重-10,检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等
vrrp_script chk_nginx {
#这里通过脚本监测
script "/etc/keepalived/nginx_check.sh"
#脚本执行间隔,每2s检测一次
interval 2
#脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
weight -10
#检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
fall 2
#检测1次成功就算成功。但不修改优先级
rise 1
}
#定义vrrp实例,VI_1 为虚拟路由的标示符,自己定义名称,keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
vrrp_instance VI_1 {
#指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。注意这里的state指定instance(Initial)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,
#但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,
#那么他会就回抢占为MASTER
state MASTER
#指定HA监测网络的接口。与本机 IP 地址所在的网络接口相同,可通过ip addr 查看
interface ens160
#当该keepalived切换为MASTER状态时,执行下面的脚本
#notify_master /etc/keepalived/chk_master.sh
#当该keepalived切换为BACKUP状态时,执行下面的脚本
#notify_backup /etc/keepalived/chk_backup.sh
# 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在哪个地址上发送VRRP通告,这个非常重要,
#一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址
mcast_src_ip 192.168.37.136
#虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
virtual_router_id 51
#定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
priority 100
#设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
advert_int 1
#设置验证类型和密码。主从必须一样
authentication {
#设置vrrp验证类型,主要有PASS和AH两种
auth_type PASS
#设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
auth_pass 1111
}
#VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
#设置VIP,它随着state变化而增加删除,当state为master的时候就添加,当state为backup的时候则删除,由优先级决定
virtual_ipaddress {
192.168.37.101
}
#执行nginx检测脚本。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
track_script {
#引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
chk_nginx
}
}
在/etc/keepalived/check_nginx.sh编辑nginx_check.sh文件并且追加内容
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]
then
systemctl stop keepalived
fi
fi
给check_nginx.sh文件赋权
sudo chmod +x /etc/keepalived/check_nginx.sh
执行命令
vim /usr/lib/systemd/system/keepalived.service
#追加内容
[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target
Documentation=man:keepalived(8)
Documentation=man:keepalived.conf(5)
Documentation=man:genhash(1)
Documentation=https://keepalived.org[Service]
Type=forking
PIDFile=/run/keepalived.pid
KillMode=process############################################主要改这个路径 环境变量
EnvironmentFile=-/root/dev/keepalived/keepalived/etc/sysconfig/keepalived
ExecStart=/root/dev/keepalived/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target
systemctl start keepalived.service #启动keepalived
#sudo service keepalived startsystemctl stop keepalived.service #停止keepalived
#sudo service keepalived stopsystemctl restart keepalived.service #重启keepalived
#sudo service keepalived restartsystemctl status keepalived.service #查看keepalived状态
#sudo service keepalived status
yum install openssl openssl-devel
yum install -y libnl3.x86_64
yum install -y libnl3-devel.x86_64
yum install -y libnfnetlink.x86_64
yum install -y libnfnetlink-devel.x86_64
#关闭 openEuler 的SELinux与防火墙 firewall
#1.关闭防火墙
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #关闭防火墙开机自启
#2.关闭 SELinux
#编辑配置文件vim /etc/selinux/config
#将SELINUX=enforcing 改为 SELINUX=disabled。
#重启生效shutdown -r now
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。