ubuntu16.04 nginx+keepalived主从搭建
<!--PS:主从都需要安装-->
主ip:192.168.125.129
从ip:192.168.125.128
vip ip(虚拟ip):192.168.125.99
安装keepalived
sudo apt-get install keepalived -y
安装nginx依赖
sudo apt-get -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
安装nginx
sudo apt-get install nginx -y
配置keepalived
查看主从机的ip等信息
ip addr
-
查看ip地址
-
查看ens
主机配置文件:
文件路径:/etc/keepalived/keepalived.conf
! Configuration File for keepalived #global_defs { # 配置报警邮箱 可以不配置 # notification_email { # acassen@firewall.loc # failover@firewall.loc # sysadmin@firewall.loc # } # notification_email_from Alexandre.Cassen@firewall.loc # smtp_server 192.168.200.1 # smtp_connect_timeout 30 # router_id LVS_DEVEL # vrrp_skip_check_adv_addr # vrrp_strict # vrrp_garp_interval 0 # vrrp_gna_interval 0 #} vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state MASTER # 标识为主服务 interface ens33 #绑定虚拟机的IP 与主机的ens相同 virtual_router_id 51 # 虚拟路由id,和从机保持一致 #mcast_src_ip 192.168.125.129 #本机ip priority 100 #权重,需要高于从机 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx ## 执行 Nginx 监控的服务 } virtual_ipaddress { 192.168.125.99 #/32 brd 255.255.255.0 dev ens33 label ens33:vip #虚拟IP地址 } }
从机配置文件
文件路径:/etc/keepalived/keepalived.conf
! Configuration File for keepalived #global_defs { # notification_email { # acassen@firewall.loc # failover@firewall.loc # sysadmin@firewall.loc # } # notification_email_from Alexandre.Cassen@firewall.loc # smtp_server 192.168.200.1 # smtp_connect_timeout 30 # router_id dreamer1 # vrrp_skip_check_adv_addr # vrrp_strict # vrrp_garp_interval 0 # vrrp_gna_interval 0 #} vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径 interval 2 ## 检测时间间隔 weight -20 ## 如果条件成立,权重-20 } vrrp_instance VI_1 { state BACKUP interface ens33 # 与本地的ens相同 virtual_router_id 51 #mcast_src_ip 192.168.125.128 ## 本机 IP 地址 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx ## 执行 Nginx 监控的服务 } virtual_ipaddress { 192.168.125.99 } }
主从机配置nginx_check.sh文件(检测心跳文件)
文件地址:/etc/keepalived/keepalived.conf
查看nginx是否启动,如果没启动则启动,如果启动不起来,停掉keepalived服务,此时心跳断掉,服务转向另一个nginx。
#!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /usr/sbin/nginx # nginx启动文件 sleep 2 # 两秒检测一次 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /etc/init.d/keepalived stop fi fi
为脚本添加可执行权限
chmod +x /etc/keepalived/nginx_check.sh
启动服务
启动nginx
systemctl start nginx # 启动Nginx服务 systemctl stop nginx # 停止Nginx服务 systemctl restart nginx # 重启Nginx服务 systemctl enable nginx # 开机自启Nginx服务 nginx -t # 检查配置文件正确性 nginx -s reload # 平滑重载配置
启动keepalived
service keepalived start # 启动keepalived
service keepalived stop # 停止keepalived
service keepalived restart # 重新启动keepalived
PS:建议将nginx和keepalived添加自启动
检验
查看虚拟ip是否配置成功
ip addr
配置成功后,在主机上面可以看到虚拟ip,从机上面不会看到。
例如:
主:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:fe:3f:34 brd ff:ff:ff:ff:ff:ff inet 192.168.125.129/24 brd 192.168.125.255 scope global dynamic ens33 valid_lft 1612sec preferred_lft 1612sec inet 192.168.125.99/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::82a3:5040:11c4:1748/64 scope link valid_lft forever preferred_lft forever
从:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:3f:08:b5 brd ff:ff:ff:ff:ff:ff inet 192.168.125.128/24 brd 192.168.125.255 scope global dynamic ens33 valid_lft 1602sec preferred_lft 1602sec inet6 fe80::4f2:3faf:5202:4265/64 scope link valid_lft forever preferred_lft forever
检验
修改主从机的网页
文件路径:/var/www/html/index.nginx-debian.html
在主机上面加上主机字样,从机上面机上从机字样,以便区分
检验是否配置成功
-
查看192.168.125.99(虚拟ip),看一下网页是否与192.168.125.129(主机ip)的网页相同
-
关闭主机的keepalived
-
service keepalived stop
-
-
查看192.168.125.99(虚拟ip),看一下网页是否为192.168.125.128(从机ip)的网页
-
如果关闭后切换成了从机的网页,那么说明配置成功!!!

浙公网安备 33010602011771号