博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lvs+keepalived+httpd高可用集群
阅读量:5882 次
发布时间:2019-06-19

本文共 9043 字,大约阅读时间需要 30 分钟。

实验环境

lvs+keepalived+httpd高可用集群

(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器(向外部提供http服务,这里仅仅使用了CentOS默认自带的http服务,没有安装其他的类似Tomcat、Jexus服务)。

  (2)本次实验基于DR负载均衡模式,设置了一个VIP(Virtual IP)为172.18.38.99,用户只需要访问这个IP地址即可获得网页服务。其中,负载均衡主机为172.18.38.100,备机为172.18.38.101。Web服务器A为172.18.38.200,Web服务器B为172.18.38.201。

实验准备

(1),绑定静态IP地址

[root@centos7-100 ~]# nmcli connection modify ens37 ipv4.addresses 172.18.38.100/16 ipv4.method manual connection.autoconnect yes     [root@centos7-101 ~]# nmcli connection modify ens37 ipv4.addresses 172.18.38.101/16 ipv4.method manual connection.autoconnect yes     [root@centos7-200 ~]# nmcli connection modify ens37 ipv4.addresses 172.18.38.200/16 ipv4.method manual connection.autoconnect yes     [root@centos7-201 ~]# nmcli connection modify ens37 ipv4.addresses 172.18.38.201/16 ipv4.method manual connection.autoconnect yes

(2),同步时间

利用chronyd服务同步时间

1,在四台主机上都执行下面的命令,注意时间服务器必须是一台

1,修改配置文件     vim /etc/chrony.conf        # Please consider joining the pool (http://www.pool.ntp.org/join.html).        server 172.18.0.1  iburst #指定一台服务器    2,利用下面这条命令概略同步一下      ntpdate 172.18.0.1      1 Apr 13:23:31 ntpdate[8517]: adjust time server 172.18.0.1 offset -0.350642 sec    3,重启chrony服务     systemctl restart chronyd.service

(3),关闭防火墙

systemctl disable firewalld    systemctl stop firewalld

(3),LVS+keepalived主从配置

1,在两台lvs服务器下载keepalived

yum  -y install keepalived

1,keepvlived_master+lvs配置文件

vim /etc/keepalived/keepalived.conf     ! Configuration File for keepalived    global_defs {       notification_email {         root@localhost   #出问题了发邮件给谁       }       notification_email_from keepalived@localhost       smtp_server 127.0.0.1 #本机邮件服务器       smtp_connect_timeout 30 #超时时间       router_id proxy1  #服务器id       vrrp_mcast_group4 224.1.1.1 #多播地址所有的keepalived会在这个地址通讯,决定谁工作    }    vrrp_instance VI_1 {        state MASTER  #主服务器        interface ens37 #网卡接口        virtual_router_id 66 #服务器id        priority 100  #优先级,        advert_int 1 #心跳检测 1秒一次        authentication { #验证            auth_type PASS  #验证类型,基于密码            auth_pass 123456 #密码        }        virtual_ipaddress {            172.18.38.99/16 #共享IP        }    }    virtual_server 172.18.38.99 80 {        delay_loop 6          lb_algo rr  #调度算法        lb_kind DR  #调度模型        #persistence_timeout 50         protocol TCP         sorry_server 127.0.0.1 80         real_server 172.18.38.200 80 {  #后端server_IP 及端口            weight 1  #权重            HTTP_GET {  #健康检测方式                url {                  path /                  status_code 200                  }                connect_timeout 3 #超时时间                nb_get_retry 3 #重试次数                delay_before_retry 3 #多长时间重试            }        }        real_server 172.18.38.201 80 {            weight 1            HTTP_GET {                url {                  path /                  status_code 200                }                connect_timeout 3                nb_get_retry 3                delay_before_retry 3            }        }    }

2,keepalived_slave+lvs配置

vim /etc/keepalived/keepalived.conf    ! Configuration File for keepalived    global_defs {       notification_email {         root@localhost       }       notification_email_from keepalived@localhost       smtp_server 127.0.0.1       smtp_connect_timeout 30       router_id proxy1       vrrp_mcast_group4 224.1.1.1    }    vrrp_instance VI_2 {        state SLAVE  "slave关键配置"        interface ens37        virtual_router_id 88        priority 80        advert_int 1        authentication {            auth_type PASS            auth_pass 123456        }        virtual_ipaddress {            172.18.38.99/16        }    }    virtual_server 172.18.38.99 80 {        delay_loop 6        lb_algo rr        lb_kind DR        #persistence_timeout 50        protocol TCP        sorry_server 127.0.0.1 80        real_server 172.18.38.200 80 {            weight 1            HTTP_GET {                url {                  path /                  status_code 200                }                connect_timeout 3                nb_get_retry 3                delay_before_retry 3            }        }        real_server 172.18.38.201 80 {            weight 1            HTTP_GET {                url {                  path /                  status_code 200                }                connect_timeout 3                nb_get_retry 3                delay_before_retry 3            }        }    }

3,在两台lvs服务器下载ipvsadm包

yum install ipvsadm

4,在两台lvs主机上都启动keepalived服务

systemctl start keepalived    systemctl enable keepalived

5,注意这时候会在ens37网卡上加上一个新的IP

[root@centos7-lvs_master ~]# ip a         ens37: 
mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:39:48:cc brd ff:ff:ff:ff:ff:ff inet 172.18.38.101/16 brd 172.18.255.255 scope global ens37 valid_lft forever preferred_lft forever inet 172.18.38.99/16 scope global secondary ens37 valid_lft forever preferred_lft forever inet6 fe80::a7b9:b100:4f55:480e/64 scope link valid_lft forever preferred_lft forever[root@centos7-lvs_slave ~]# ip a ens37:
mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:39:48:cc brd ff:ff:ff:ff:ff:ff inet 172.18.38.101/16 brd 172.18.255.255 scope global ens37 valid_lft forever preferred_lft forever inet 172.18.38.99/16 scope global secondary ens37 valid_lft forever preferred_lft forever inet6 fe80::a7b9:b100:4f55:480e/64 scope link valid_lft forever preferred_lft forever

5,查看调度规则

[root@centos7-lvs_master ~]# ipvsadm -ln    IP Virtual Server version 1.2.1 (size=4096)    Prot LocalAddress:Port Scheduler Flags      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn    TCP  172.18.38.99:80 rr      -> 172.18.38.200:80             Route   1      0          4               -> 172.18.38.201:80             Route   1      0          4        [root@centos7-lvs_slave  ~]# ipvsadm -ln    IP Virtual Server version 1.2.1 (size=4096)    Prot LocalAddress:Port Scheduler Flags      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn    TCP  172.18.38.99:80 rr      -> 172.18.38.200:80             Route   1      0          0               -> 172.18.38.201:80             Route   1      0          0

(4),配置2个后端web服务器

1,安装httpd软件

1,安装httpd软件    yum install http    2,启动服务        systemctl start httpd        systemctl enable httpd    2,生成web页面,        A主机            echo web_server_A > /var/www/html/index.html        b主机            echo web_server_B > /var/www/html/index.html

2,在两个web服务器执行下面的脚本,会在lo网卡上生成一个vip

vim lvs_br_rs.sh    #!/bin/bash    #Author:wangxiaochun    #Date:2017-08-13    vip=172.18.38.99   "只需要修改一下IP即可"    mask='255.255.255.255'    dev=lo:1    case $1 in    start)        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce        ifconfig $dev $vip netmask $mask #broadcast $vip up        #route add -host $vip dev $dev        echo "The RS Server is Ready!"        ;;    stop)        ifconfig $dev down        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce        echo "The RS Server is Canceled!"        ;;    *)        echo "Usage: $(basename $0) start|stop"        exit 1        ;;    esac

3,查看lo网卡

[root@centos7-web_server_A ~]# ip a     1: lo: 
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 inet 172.18.38.99/32 scope global lo:1 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever [root@centos7-web_server_B ~]# ip a 1: lo:
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 inet 172.18.38.99/32 scope global lo:1 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever

客户端测试

1,不宕任何服务

[root@centos6 ~]# for i in {1..10};do sleep 0.5;curl 172.18.38.99;done    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A

2,宕掉一台keepalived测试

[root@centos7 lvs_master ~]# systemctl stop keepalived.service    [root@centos6 ~]# for i in {1..10};do sleep 0.5;curl 172.18.38.99;done    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A    web_server_B    web_server_A

测试通过

转载于:https://blog.51cto.com/13598893/2093555

你可能感兴趣的文章
Python WOL/WakeOnLan/网络唤醒数据包发送工具
查看>>
sizeof(long)
查看>>
pxe网络启动和GHOST网克
查看>>
2.5-saltstack配置apache
查看>>
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
Python学习笔记
查看>>
java String
查看>>
renhook的使用
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>
Zabbix汉化方法
查看>>
Java I/O系统基础知识
查看>>
Java多线程设计模式(2)生产者与消费者模式
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>