Linux中级之keepalived配置

hacmp:
ibm的高可用集群软件,并且是商业的(收费),一般用于非x86架构机器当中
AIX,Unix
去IOE:ibm,oracle,emc
keepalived:
一款高可用集群软件,利用vrrp协议实现vip地址的漂移;
  keepalived+lvs
  keepalived+nginx
  keepalived+haproxy
配置文件主要分为三类分别是:
(1)全局配置
(2)VRRP配置
(3)LVS配置

keepalived对RS做健康检查的方式

 1 1. HTTP_GET:向后端的RS发送http请求,如果请求成功,说明后端节点正常(RS是web服务的时候比较常用)
 2 2. TCP:尝试与后端RS建立TCP连接,如果成功,说明后端节点正常
 3     【仅仅是检查RS系统是否正常工作,不能检查具体的业务】
 4 3. SMTP:对邮件服务器做健康检测
 5 4. MISC:通过脚本的方式实现健康检测
 6 
 7 
 8     TCP健康检测方式举例
 9         TCP_CHECK {                  # 通过TcpCheck判断RealServer的健康状态
10             connect_timeout 10    # 连接超时时间
11             nb_get_retry 3        # 重连次数
12             delay_before_retry 3  # 重连时间间隔
13             connect_port 80       # 检测端口
14         }
15 
16 
17     HTTP_GET健康检测方式举例
18         HTTP_GET {
19             url {
20                 path check/t.html     # 检查的uri地址
21                 digest 1362a91278f0   # 用keepalived自带的genhash生成
22 
23             connect_timeout 3         # 链接超时时间
24             nb_get_retry 3            # 重连次数
25             delay_before_retry 3      # 重连时间间隔
26             connect_port 6500         # 检测端口
27         }
28 
29     MISC健康检测方式举例
30         MISC_CHECK {
31             misc_path "/tmp/check.sh http://1.2.3.4:80/c/200.jsp"    
32             # 调用外部程序或者脚本的路径和参数
33 
34             misc_timeout 10   
35             # 脚本执行的超时时间
36 
37             misc_dynamic      
38             # 动态权重标志。
39             # 脚本返回0 则检测成功,权重不变
40             # 返回1表示失败,权重设置为0
41         }

keepalived配置

 1 vrrp部分
 2 vim /etc/keepalived/keepalived.conf
 3 ! Configuration File for keepalived
 4 #全局配置
 5 global_defs {
 6    notification_email {
 7         #收件人地址
 8    }
 9         #邮件服务器
10 }
11 #VRRP配置DS1
12 vrrp_instance VI_1 {
13     state MASTER                    #角色类型MASTER|BACKUP
14     interface ens33                 #网卡名称
15     virtual_router_id 51            #虚拟路由id(需要与BACKUP一致)
16     priority 100                    #优先级
17     advert_int 1                    #没1秒检查一次
18     #nopreempt                      #非抢占模式,默认为抢占模式
19     authentication {
20         auth_type PASS              #认证类型  主备之间必须一样
21         auth_pass 1111              #认证密码  主备之间必须一样
22     }
23     virtual_ipaddress {
24         192.168.11.100              #虚拟ip(vip)
25     }
26 }

 1 #利用脚本实现httpd服务的高可用
 2 vrrp_script chk_httpd {
 3     script "/root/sh/check_httpd.sh"
 4     interval 2
 5 }
 6 
 7 vrrp_instance VI_1 {
 8     state MASTER  
 9     interface ens33
10     virtual_router_id 11
11     priority 100
12     advert_int 1
13     authentication {
14         auth_type PASS
15         auth_pass 1111
16     }
17     virtual_ipaddress {
18         192.168.11.100/24
19     }
20     track_script {
21         chk_httpd
22     }
23     notify_master "/root/notify.sh master"
24     notify_backup "/root/notify.sh backup"
25     notify_fault "/root/notify.sh fault"
26 }
27 
28 vrrp_instance VI_2 {
29     state MASTER
30     interface ens33
31     virtual_router_id 22
32     priority 100
33     advert_int 1
34     authentication {
35         auth_type PASS
36         auth_pass 2222
37     }
38     virtual_ipaddress {
39         192.168.11.200/24
40     }
41 }
1 #check_httpd.sh内容:
2 #!/bin/bash
3 service httpd status
4 if [[ $? -eq 0 ]];then
5     echo 'httpd is up...'
6 else
7     pkill keepalived  #或者service keepalived stop
8 fi
#shell发送邮件的内容
#!/bin/bash
contact='2367880638@qq.com'
notify() {
    mailsubject="$HOSTNAME to be $1, vip转移"
    mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
    echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
    notify master
    ;;
backup)
    notify backup
    ;;
fault)
    notify fault
    ;;
*)
    echo "Usage: $(basename $0) {master|backup|fault}"
    exit 1
    ;;
esac
 1 #配置邮件服务器
 2 yum install -y mailx
 3 vim /etc/mail.rc
 4 在后面增加:
 5     set from=2367880638@qq.com
 6     set smtp=smtp.qq.com
 7     set smtp-auth-user=2367880638@qq.com
 8     set smtp-auth-password=jrhncbzpcthoecdd
 9     set smtp-auth=login
10 
11     set from:设置发件人
12     set smtp:设置外部STMP服务器
13     set smtp-auth-user:设置STMP用户名(一般为完整邮箱地址)
14     set smtp-auth-password:设置SMTP密码

lvs部分:
#LVS配置
virtual_server 192.168.11.100 80 {    
    delay_loop 3                    #健康检查时间间隔
    lb_algo rr                        #负载均衡调度算法  
    lb_kind DR                        #负载均衡转发规则 
    protocol TCP                    #协议

    real_server 192.168.11.11 80 {    #要监控的real_server的ip和端口号
            weight 1                 #权重
        TCP_CHECK {                    #基于tcp协议的检查
            connect_timeout 3          #连接时间超时
            retry 3                    #重连次数
            delay_before_retry 3    #重连间隔时间
        }
    }
    real_server 192.168.11.12 80 {    #要监控的real_server的ip和端口号
            weight 1                 #权重
        TCP_CHECK {                    #基于tcp协议的检查
            connect_timeout 3          #连接时间超时
            retry 3                    #重连次数
            delay_before_retry 3    #重连间隔时间
        }
    }
}

#在回环地址的子网口上配置服务ip(vip)

ifconfig lo:0 192.168.11.100 broadcast 192.168.11.100 netmask 255.255.255.255 up

#添加路由

route add -host 192.168.11.100 dev lo:0

echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

posted @ 2019-08-22 18:40  Wolf_Coder  阅读(792)  评论(0编辑  收藏  举报