目录
一、配置高可用集群实例
单台Nginx可能宕机的几率比较大。如下图
高可用配置如下图
1、前期准备工作
1、准备工作
(1)、需要两台Nginx服务器
(2)、需要在2台服务器安装keepalived
(3)、需要虚拟IP
--安装keepalived
yum -y install keepalived
--验证是否安装成功
[root@localhost sbin]# rpm -q -a keepalived
keepalived-1.3.5-19.el7.x86_64
[root@localhost sbin]#
--keepalived的安装目录 /etc/keepalived
[root@localhost etc]# cd /etc/keepalived
[root@localhost keepalived]# ls
keepalived.conf
[root@localhost keepalived]#
两台Nginx服务器IP
192.168.0.113
192.168.0.137
虚拟IP:192.168.0.110
2、配置高可用集群配置(主从配置)
1、修改/etc/keepalived/keepalived.conf配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.113
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_http_port {
script "usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将MASTER 改为BACKUP
interface enp0s3 # 网卡
virtual_router_id 51 # 主备机的virtual_router_id 必须相同
priority 80 # 主备机取不同优先级,主机值较大,备机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.110 //VRRP 虚拟机地址
}
}
2、在/usr/local/src下添加检测脚本nginx_check.sh
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0];then
killall keepalived
fi
fi
3、把两台服务器上的Nginx和keepalived启动
启动nginx:./nginx
启动keepalived:systemctl start keepalived.service
---------------
[root@localhost sbin]# ./nginx
[root@localhost sbin]# systemctl start keepalived.service
[root@localhost sbin]# ps -ef | grep keepalived
root 10986 1 0 12:10 ? 00:00:00 /usr/sbin/keepalived -D
root 10987 10986 0 12:10 ? 00:00:00 /usr/sbin/keepalived -D
root 10988 10986 0 12:10 ? 00:00:00 /usr/sbin/keepalived -D
root 11007 2099 0 12:11 pts/0 00:00:00 grep --color=auto keepalived
[root@localhost sbin]#
----------------
4、测试
---主机上可以看到192.168.0.110/32 scope global enp0s3
[root@localhost sbin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:a8:1c:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 75129sec preferred_lft 75129sec
inet 192.168.0.110/32 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fea8:1cbd/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:01:a7:1f:b4 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
[root@localhost sbin]#
---备机上可以看到global dynamic enp0s3
[root@localhost sbin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:11:ba:72 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.137/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 82365sec preferred_lft 82365sec
inet6 fe80::a00:27ff:fe11:ba72/64 scope link
valid_lft forever preferred_lft forever
[root@localhost sbin]#
把主服务器(192.168.0.113)nginx和keepalived停止,
--
停止keepalived:systemctl stop keepalived.service
停止nginx:./nginx -s stop
[root@localhost sbin]# systemctl stop keepalived.service
[root@localhost sbin]# ./nginx -s stop
--备机上可以看到inet 192.168.0.110/32 scope global enp0s3
[root@localhost sbin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:11:ba:72 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.137/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 82052sec preferred_lft 82052sec
inet 192.168.0.110/32 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe11:ba72/64 scope link
valid_lft forever preferred_lft forever
[root@localhost sbin]#
---主机上变为global dynamic enp0s3
[root@localhost sbin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:a8:1c:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 74707sec preferred_lft 74707sec
inet6 fe80::a00:27ff:fea8:1cbd/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:01:a7:1f:b4 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
[root@localhost sbin]#
keepalived.conf配置文件中的router_id LVS_DEVEL可在如下做配置,可不配置。
vi /etc/hosts中配置
127.0.0.1 LVS_DEVEL