keepalived高可用
keepalived可以对NGINX做高可用,也可以对lvs做高可用,但对nginx只能做vip地址的漂移,而对lvs做高可用可以对后端的数据存储做控制
下面对nginx做高可用的配置如下:
通过官方下载keepalived:[root@mysql-server tools]# wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz
keepalived可能会用到linux的内核支持,对内核做软连接
[root@mysql-server tools]# ln -s /usr/src/kernels/2.6.32-504.el6.x86_64/ /usr/src/linux
接下来对keepalived进行安装
[root@mysql-server tools]# tar xf keepalived-1.2.16.tar.gz [root@mysql-server tools]# cd keepalived-1.2.16 [root@mysql-server keepalived-1.2.16]# ./configure [root@mysql-server keepalived-1.2.16]# make && make install
安装过程中可能会报openssl错误,安装即可:yum install openssl-devel -y
接下来对keepalived的启动配置文件做调整
[root@mysql-server keepalived-1.2.16]# \cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ [root@mysql-server keepalived-1.2.16]# \cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ [root@mysql-server keepalived-1.2.16]# mkdir /etc/keepalived [root@mysql-server keepalived-1.2.16]# \cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ [root@mysql-server keepalived-1.2.16]# \cp /usr/local/sbin/keepalived /usr/sbin/
当然也可通过yum来安装keepalived
调整好keepalived的配置文件和启动文件后就可以对配置keepalived了,先配置主keepalived
[root@mysql-server keepalived]# cp keepalived.conf keepalived.conf.ori
[root@mysql-server keepalived]# vim keepalived.conf
global_defs {
notification_email {
396540914@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.144/24
}
}
启动keepalived并查看其进程
[root@mysql-server keepalived]# /etc/init.d/keepalived start [root@mysql-server keepalived]# ps -ef|grep keepalived root 6212 1 0 14:09 ? 00:00:00 keepalived -D root 6214 6212 0 14:09 ? 00:00:00 keepalived -D root 6215 6212 0 14:09 ? 00:00:00 keepalived -D
查看配置文件中设置的vip有没有生效,如果有,说明keepalived生效了
[root@mysql-server keepalived]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:da:3d:e2 brd ff:ff:ff:ff:ff:ff
inet 192.168.182.144/24 brd 192.168.182.255 scope global eth0
inet 10.10.10.144/24 scope global eth0
inet6 fe80::20c:29ff:feda:3de2/64 scope link
将此配置文件拷贝到备keepalived上:[root@mysql-server keepalived]# scp /etc/keepalived/keepalived.conf 192.168.182.145:/etc/keepalived/
修改备服务器上的配置文件如下:这里需要修改 router_id priority stat就可,其他不变
global_defs {
notification_email {
396540914@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.144/24
}
}
启动备服务器上的keepalived服务即可,在主备服务器上同时查看vip地址 ip add|grep 10.10.10.144,此时只有主服务上有vip,备上查看不了vip.如果主服务宕机了,再查看主备服务的vip,这时候备服务接管了主服务器,此时只有在接管的备服务上看到vip,而被接管的主服务器上就无法查看vip了。
配置keeplived日志为独立的日志文件
由于keeplived日志文件默认是放在message.log的日志文件中的,可以通过下面的方法将keepalived日志分离出来
修改keepalived文件‘’
[root@mysql-server ~]# vim /etc/sysconfig/keepalived # Options for keepalived. See `keepalived --help' output and keepalived(8) and # keepalived.conf(5) man pages for a list of all options. Here are the most # common ones : # # --vrrp -P Only run with VRRP subsystem. # --check -C Only run with Health-checker subsystem. # --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop. # --dont-release-ipvs -I Dont remove IPVS topology on daemon stop. # --dump-conf -d Dump the configuration data. # --log-detail -D Detailed log messages. # --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON) # KEEPALIVED_OPTIONS="-D -d -S 0"
主要将keepalived的级别调整为0,即上面的调整方式:KEEPALIVED_OPTIONS="-D -d -S 0" 这样在rsyslog中就可以定义keepalived.log日志文件的名称。
[root@mysql-server ~]# vim /etc/rsyslog.conf #keepalived log file local0.* /var/log/keeplived.log
重启rsyslog服务、keepalived服务
[root@mysql-server ~]# /etc/init.d/rsyslog restart [root@mysql-server ~]# /etc/init.d/keepalived restart
这样在/var/log/下就生成了定义的keepalived的日志文件,日志文件内容如下:
[root@mysql-server ~]# tail /var/log/keeplived.log Oct 9 15:51:09 mysql-server Keepalived_healthcheckers[6405]: Netlink reflector reports IP 192.168.182.144 added Oct 9 15:51:09 mysql-server Keepalived_vrrp[6406]: Netlink reflector reports IP fe80::20c:29ff:feda:3dec added Oct 9 15:51:09 mysql-server Keepalived_vrrp[6406]: Registering Kernel netlink reflector Oct 9 15:51:09 mysql-server Keepalived_vrrp[6406]: Registering Kernel netlink command channel Oct 9 15:51:09 mysql-server Keepalived_vrrp[6406]: Registering gratuitous ARP shared channel
浙公网安备 33010602011771号