• Linux高可用(HA)集群keepalived实验


    本实验均在centos7.2操作

    实验之前请先关闭 iptables 和 SELinux

    实验1:keepalived 高可用 lvs-dr测试

    拓扑图如下:

    实验操作

    1,先配置两台web 站点

    由于是基于dr模型,因此配置和lvs-dr配置类似

    a,先配置VIP

    1. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
    2. echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
    3. echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
    4. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
    5. ifconfig lo:0 192.168.153.100 netmask 255.255.255.255 broadcast 192.168.153.100 up
    6. route add -host 192.168.153.100 dev lo:0

    b,配置web服务

    rs1:

    1. yum install -y httpd
    2. echo rs1 > /var/www/html/index.html

    rs2:

    1. yum install -y httpd
    2. echo rs2 > /var/www/html/index.html

    c,启动服务

    1. iptables -F
    2. setenforce 0
    3. systemctl start httpd

    2,配置keepalived服务

    a,安装程序包

    yum install -y keepalived

    b,修改配置文件

    1. cd /etc/keepalived/
    2. cp keepalived.conf{,.bak}

    c,编写notify脚本,能够让我们及时知道服务器的运行状态

    1. #!/bin/bash
    2. contact='root@localhost'
    3. notify() {
    4.         mailsubject="$(hostname) to be $1, vip floating"
    5.         mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
    6.         echo "$mailbody" | mail -s "$mailsubject" $contact 
    7. }
    8. case $1 in
    9. master)
    10.         notify master
    11.         ;;
    12. backup)
    13.         notify backup
    14.         ;;
    15. fault)
    16.         notify fault
    17.         ;;
    18. *)
    19.         echo "Usage: $(basename $0) {master|backup|fault}"
    20.         exit 1
    21.         ;;
    22. esac
    加上执行权限 chmod +x /etc/keepalived/notify.sh

    d,生成keepalived通信的密码,最多8位,然后将密码填在

    e,访问成功的状态码是200

    f,对 /etc/keepalived/keepalived.conf 配置文件进行编辑

    1. ! Configuration File for keepalived
    2. global_defs {
    3.    notification_email {
    4.         root@localhost
    5.   }
    6.    notification_email_from keepalived1@localhost
    7.    smtp_server 127.0.0.1
    8.    smtp_connect_timeout 30
    9.    router_id LVS_DEVEL
    10.    vrrp_mcast_group4 224.0.41.41
    11. }
    12. vrrp_instance VI_1 {
    13.     state MASTER
    14.     interface eno33554984
    15.     virtual_router_id 41
    16.     priority 100
    17.     advert_int 1
    18.     authentication {
    19.         auth_type PASS
    20.         auth_pass b8d99f88
    21.     }
    22.     virtual_ipaddress {
    23.         192.168.153.100
    24.     }
    25.     notify_master "/etc/keepalived/notify.sh master"    #当前节点成为主节点时 ,然后触发该脚本
    26.     notify_backup "/etc/keepalived/notify.sh backup"
    27.     notify_fault "/etc/keepalived/notify.sh fault"
    28. }
    29. virtual_server 192.168.153.100 80 {
    30.     delay_loop 3         #服务轮询的时间间隔
    31.     lb_algo rr     #轮询的调度方法
    32.     lb_kind DR    # dr 模型的集群
    33.    
    34.     protocol TCP         #服务协议,仅支持TCP
    35.     sorry_server 127.0.0.1 80     #当web1,web2服务器都挂时,才启用该服务
    36.     real_server 192.168.153.130 80 {
    37.         weight 1       #服务器访问权重
    38.         HTTP_GET {
    39.             url {
    40.               path /          #定义要监控的URL
    41.               status_code 200  #当请求状态码为200时,才说明该服务器健康检查通过
    42.             }
    43.             connect_timeout 1        #连接请求的超时时长
    44.             nb_get_retry 3            #重试次数
    45.             delay_before_retry 1     #重试之前的延迟时长
    46.         }
    47.     }
    48.     real_server 192.168.153.131 80 {
    49.         weight 1
    50.         HTTP_GET {
    51.             url {
    52.               path /
    53.               status_code 200
    54.             }
    55.             connect_timeout 1
    56.             nb_get_retry 3
    57.             delay_before_retry 1
    58.         }
    59.     }
    60. }

    3,将配置文件拷贝一份到备服务器,并做相应的修改

    a,复制配置文件到备节点服务器

    b,编辑备用配置文件

    4,在keepalived上配置sorry_server

    主节点:

    1. yum install httpd -y
    2. echo keepalived1 error > /var/www/html/index.html

    备节点:

    1. yum install httpd -y
    2. echo keepalived2 error > /var/www/html/index.html

    5,启动服务

    1. iptables -F
    2. setenforce 0
    3. systemctl start httpd
    4. systemctl start keepalived

    在主节点上可以看到lvs自动配置好了

    6,测试

    关闭web1,web2的httpd服务

    然后开启web1的服务

    实验2:keepalived 高可用 nginx测试

    1,只需要更改/etc/keepalived/keepalived.conf 配置文件

    1. ! Configuration File for keepalived
    2. global_defs {
    3.    notification_email {
    4.         root@localhost
    5.   }
    6.    notification_email_from keepalived1@localhost
    7.    smtp_server 127.0.0.1
    8.    smtp_connect_timeout 30
    9.    router_id LVS_DEVEL
    10.    vrrp_mcast_group4 224.0.41.41
    11. }
    12. vrrp_script chk_nginx {                            #定义脚本
    13.    script "killall -0 nginx && exit 0 || exit 1"      #当nginx进程不存在时,返回1
    14.    interval 1             #每一秒运行一次脚本
    15.    weight -5            #当返回值不是0时,执行 权重减去5 操作
    16. }
    17. vrrp_script chk_downfile {
    18.    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"         #当/etc/keepalived/目录下存在 down 文件时,该节点的优先级减去5
    19.    interval 1
    20.    weight -5
    21. }
    22. vrrp_instance VI_1 {
    23.     state MASTER
    24.     interface eno33554984
    25.     virtual_router_id 41
    26.     priority 100
    27.     advert_int 1
    28.     authentication {
    29.         auth_type PASS
    30.         auth_pass b8d99f88
    31.     }
    32.     virtual_ipaddress {
    33.         192.168.153.100
    34.     }
    35.         
    36.     track_script {         #加载前面定义的脚本
    37.         chk_nginx
    38.         chk_downfile
    39.     }
    40.     notify_master "/etc/keepalived/notify.sh master"
    41.     notify_backup "/etc/keepalived/notify.sh backup"
    42.     notify_fault "/etc/keepalived/notify.sh fault"
    43. }

    2,卸载httpd程序,安装nginx程序

    1. yum remove -y httpd
    2. yum install -y /share/nginx-1.10.2-1.el7.ngx.x86_64.rpm

    配置nginx服务

    vim /etc/nginx/nginx.conf

    vim /etc/nginx/conf.d/default.conf

    启动服务

    1. systemctl start nginx
    2. systemctl start keepalived

    测试:

     

     

  • 相关阅读:
    Qt插件系统
    【赠书活动】浅谈C#中垃圾回收机制
    [附源码]Python计算机毕业设计Django高血压分析平台
    European Championship 2024 I. Disks
    【云原生 | Kubernetes 实战】03、手把手教你基于YAML文件运行pod应用
    7. RabbitMQ之延时队列
    AI问答-医疗:什么是“手术报台”
    华为防火墙:GRE over IPSec
    企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
    SpringBoot笔记之SpringSecurity
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126405247