18.1 集群介绍
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群
扩展
heartbeat和keepalived比较http://blog.csdn.net/yunhua_lee/article/details/9788433
DRBD工做原理和配置 http://502245466.blog.51cto.com/7559397/1298945
mysql+keepalived http://lizhenliang.blog.51cto.com/7876557/1362313html
B机器yum安装nginx [root@yong-02 ~]# yum install -y nginx
A机器更改配置文件 [root@yong-01 ~]# ls /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf [root@yong-01 ~]# > !$ > /etc/keepalived/keepalived.conf [root@yong-01 ~]# vim !$ vim /etc/keepalived/keepalived.conf //去文件地址去下载内容 将拷贝的内容复制进去 只须要改网卡名字和IP192.168.180.100 ####################### # 全局配置 ####################### global_defs { //global_defs 全局配置标识 notification_email { //notification_email用于设置报警邮件地址 yyli2008@163.com //能够设置多个,每行一个 } notification_email_from root@aminglinux.com //设置邮件发送地址 smtp_server 127.0.0.1 //设置邮件的smtp server地址 smtp_connect_timeout 30 //设置链接smtp sever超时时间 router_id LVS_DEVEL } ###################### # VRRP配置 ###################### vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" //检查服务是否正常,经过写脚本实现,脚本检查服务健康状态 interval 3 //检查的时间间断是3秒 } vrrp_instance VI_1 { //VRRP配置标识 VI_1是实例名称 state MASTER //定义master相关 interface ens33 //经过vrrp协议去通讯、去发广播。配置时,需注意本身的网卡名称 virtual_router_id 51 //定义路由器ID ,配置的时候和从机器一致 priority 100 //权重,主角色和从角色的权重是不一样的 advert_int 1 //设定MASTER与BACKUP主机质检同步检查的时间间隔,单位为秒 authentication { //认证相关信息 auth_type PASS //这里认证的类型是PASS auth_pass aminglinux>com //密码的形式是一个字符串 } virtual_ipaddress { //设置虚拟IP地址 (VIP),又叫作漂移IP地址 192.168.180.100 //更改成192.168.180.100 } track_script { //加载脚本 chk_nginx } }
A机器定义监控脚本 [root@yong-01 ~]# vim /usr/local/sbin/check_ng.sh #!/bin/bash #时间变量,用于记录日志 d=`date --date today +%Y%m%d_%H:%M:%S` #计算nginx进程数量 n=`ps -C nginx --no-heading|wc -l` #若是进程为0,则启动nginx,而且再次检测nginx进程数量, #若是还为0,说明nginx没法启动,此时须要关闭keepalived if [ $n -eq "0" ]; then /etc/init.d/nginx start n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi
[root@yong-01 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@yong-01 ~]# systemctl start keepalived [root@yong-01 ~]# ps aux |grep keep root 4979 0.0 0.0 118608 1384 ? Ss 23:14 0:00 /usr/sbin/keepalived -D root 4980 0.0 0.1 127468 3288 ? S 23:14 0:00 /usr/sbin/keepalived -D root 4982 0.0 0.1 127340 2820 ? S 23:14 0:00 /usr/sbin/keepalived -D root 6125 0.0 0.0 112676 984 pts/0 R+ 23:23 0:00 grep --color=auto keep
[root@yong-01 ~]# ps aux |grep nginx root 4648 0.0 0.0 24792 760 ? Ss 22:55 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 4649 0.0 0.0 25188 1720 ? S 22:55 0:00 nginx: worker process root 6187 0.0 0.0 112676 984 pts/0 R+ 23:24 0:00 grep --color=auto nginx
[root@yong-01 ~]# /etc/init.d/nginx stop Stopping nginx (via systemctl): [ 肯定 ] [root@yong-01 ~]# ps aux |grep nginx root 6270 0.0 0.0 24792 756 ? Ss 23:24 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 6274 0.0 0.0 25188 1212 ? S 23:24 0:00 nginx: worker process root 6282 0.0 0.0 112676 984 pts/0 R+ 23:24 0:00 grep --color=auto nginx
[root@yong-01 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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 qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
首先清空B机器keepalived里面自带的配置文件 [root@yong-02 ~]# >/etc/keepalived/keepalived.conf [root@yong-02 ~]# vim /etc/keepalived/keepalived.conf 而后复制配置文件并粘贴进去,更改虚拟IP和主同样的 global_defs { notification_email { yyli2008@163.com } notification_email_from root@aminglinux.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state BACKUP //这里 和master不同的名字 interface ens33 //网卡和当前机器一致,不然没法启动keepalived服务 virtual_router_id 51 //和主机器 保持一致 priority 90 //权重,要比主机器小的数值 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 192.168.180.100 //这里更改成192.168.180.100 } track_script { chk_nginx } }
[root@yong-02 ~]# vim /usr/local/sbin/check_ng.sh #时间变量,用于记录日志 d=`date --date today +%Y%m%d_%H:%M:%S` #计算nginx进程数量 n=`ps -C nginx --no-heading|wc -l` #若是进程为0,则启动nginx,而且再次检测nginx进程数量, #若是还为0,说明nginx没法启动,此时须要关闭keepalived if [ $n -eq "0" ]; then systemctl start nginx n2=`ps -C nginx --no-heading|wc -l` if [ $n2 -eq "0" ]; then echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log systemctl stop keepalived fi fi
[root@yong-02 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@yong-02 ~]# systemctl start keepalived [root@yong-02 ~]# ps aux |grep keepalived root 2507 0.0 0.0 118608 1384 ? Ss 23:34 0:00 /usr/sbin/keepalived -D root 2508 0.0 0.1 122804 2376 ? S 23:34 0:00 /usr/sbin/keepalived -D root 2509 0.0 0.1 122804 2420 ? S 23:34 0:00 /usr/sbin/keepalived -D root 2515 0.0 0.0 112676 984 pts/0 R+ 23:34 0:00 grep --color=auto keepalived
[root@yong-01 ~]# mv /usr/local/nginx/html/index.html /usr/local/nginx/html/index.html.bak [root@yong-01 ~]# vim /usr/local/nginx/html/index.html master This is the default sete.
[root@yong-02 ~]# mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak [root@yong-02 ~]# vim /usr/share/nginx/html/index.html backup backup.
[root@yong-01 ~]# systemctl stop keepalived
[root@yong-01 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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 qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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 qlen 1000 link/ether 00:0c:29:36:a2:be brd ff:ff:ff:ff:ff:ff inet 192.168.180.135/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.136/24 brd 192.168.180.255 scope global secondary ens33:0 valid_lft forever preferred_lft forever inet6 fe80::c44:f02d:4192:8d42/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# tail /var/log/messages Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100
浏览器访问vip,会看到已经变成backup机器上的了mysql
在master机器(即A机器)启动keepalived服务,会看到vip这个IP马上回来了linux
[root@yong-01 ~]# systemctl start keepalived [root@yong-01 ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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 qlen 1000 link/ether 00:0c:29:29:2b:60 brd ff:ff:ff:ff:ff:ff inet 192.168.180.134/24 brd 192.168.180.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.180.100/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::8004:45b5:96c5:3ca5/64 scope link valid_lft forever preferred_lft forever
[root@yong-02 ~]# tail /var/log/messages Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:44 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100 Jul 4 15:40:49 yong-02 Keepalived_vrrp[2047]: Sending gratuitous ARP on ens33 for 192.168.180.100
##总结nginx