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

  

 

posted @ 2017-10-09 14:37  goser  阅读(297)  评论(0)    收藏  举报