摘要
环境
主机 |
IP |
MASTER |
192.168.1.90 |
BACKUP |
192.168.1.91 |
Nginx安装
下载
1 2 3
| wget http://nginx.org/download/nginx-1.16.0.tar.gz 也可以使用Tengine wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
|
安装依赖
1
| yum -y install pcre-devel openssl-devel gcc
|
安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| tar zxf nginx-1.16.0.tar.gz
cd nginx-1.16.0 ./configure \ --prefix=/usr/local/nginx \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_v2_module \ --with-http_ssl_module \ --with-file-aio \ --with-http_realip_module
make && make install
|
创建Nginx用户
1
| useradd -s /sbin/nologin www
|
修改Nginx目录权限
1
| chown -R www:www /usr/local/nginx
|
安装Keepalive
下载
1
| wget https://www.keepalived.org/software/keepalived-2.0.16.tar.gz
|
1 2 3 4 5 6 7 8
| tar zxf keepalived-2.0.16.tar.gz
cd keepalived-2.0.16 ./configure \ --prefix=/usr/local/keepalived
make make install
|
添加到systemctl和chkconfig进行管理
1
| vi /lib/systemd/system/keepalived.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [Unit] Description=Keepalived After=syslog.target network.target remote-fs.target nss-lookup.target
[Service] Type=forking PIDFile=/var/run/keepalived.pid ExecStart=/usr/local/keepalived/sbin/keepalived -D ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true
[Install] WantedBy=multi-user.target
ExecStart=/usr/local/keepalived/sbin/keepalived -D #keepalived的启动文件 -D是输出详细日志 PIDFile=/var/run/keepalived.pid #keepalived默认存放pid的位置
|
配置Keepalive
两个节点配置文件不一样的地方只有state、priority和router_id,其他完全保持一致。
节点1配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ! Configuration File for keepalived
global_defs { router_id NGINX_DEVEL }
vrrp_script chk_nginx { script "/usr/local/keepalived/check_nginx.sh" interval 1 weight -20 }
vrrp_instance VI_1 { state MASTER #这里只能接受MASTER和BACKUP,而且必须为大写 interface eth0 #绑定虚拟IP的网卡接口 virtual_router_id 51 #虚拟ID,同一个ID之间互相通讯,两个节点之间必须保持一致 priority 100 #优先级(0-254),一般设置100左右,主节点要比从节点高 advert_int 1 #发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔) authentication { auth_type PASS #设置验证方式,这里采用的是明文密码认证,两个节点必须保持一致 auth_pass 1234 } virtual_ipaddress { 192.168.1.100 #虚拟IP,可以设置多个 }
track_script { chk_nginx #nginx存活状态检测脚本 } }
|
节点2配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ! Configuration File for keepalived
global_defs { router_id NGINX_DEVEL }
vrrp_script chk_nginx { script "/usr/local/keepalived/check_nginx.sh" interval 1 weight -20 }
vrrp_instance VI_1 { state BACKUP #这里只能接受MASTER和BACKUP,而且必须为大写 interface eth0 #绑定虚拟IP的网卡接口 virtual_router_id 51 #虚拟ID,同一个ID之间互相通讯,两个节点之间必须保持一致 priority 90 #优先级(0-254),一般设置100左右,主节点要比从节点高 advert_int 1 #发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)。 authentication { auth_type PASS #设置验证方式,这里采用的是明文密码认证,两个节点必须保持一致 auth_pass 1234 } virtual_ipaddress { 192.168.1.100 #虚拟IP,可以设置多个 } track_script { chk_nginx #nginx存活状态检测脚本 } }
|
分别启动Keepalived
1 2
| systemctl start keepalived.service #启动 systemctl stop keepalived.service #停止
|