06
2024
08
15:34:28

Keepalived(主从配置)-高可用负载均衡web集群

Keepalived(主从)+[LVS(RD)+Web Server(nginx)]

高可用负载均衡web集群

目录:

  • 实验准备

  • 实验过程

  • 其他场景



一、实验准备

1.实验框架图

图片

2.实验准备(VMware 桥接模式)

角色

ip

OS

VIP

部署服务

LVS-01

192.168.10.160

centos

192.168.10.166/32

lvsadm 

keepalived

LVS-02

192.168.10.161

centos

lvsadm 

keepalived

Web-01

192.168.10.162

centos 

nginx

vip_lo(脚本配vip)

web-02

192.168.10.163

centos

nginx

lvsys(脚本配vip)

二、开始搭建[LVS-01 LVS-02 WEB-01 WEB-02]

LVS-01

1.配网络

静态ip和DNS

2.关闭防火墙和selinux

systemctl disable firewalld(搭建完以后再做防火墙策略)

sed -i 's\SELINUX=enforcing\SELINUX=disabled\g' /etc/selinux/config

setenforce 0

3.安装lvsadm和keepalived

yum install ipvsadm  keepalived -y

4.查看内核是否支持ip_vs

sudo lsmod |grep ip_vs

#如果不支持:先更新以下内核

#yum update -y

5.编写keepalived的配置文件(主从或者主主两个keepalived的配置文件基本相同,

除了id和VRRP名称不同其他配置一致)

图片

6.启动keepalived

systemctl enable --now keepalived

7.检查ipvs规则是否创建

ipvsadm -Ln

图片

8.访问VIP看是否成功

图片

9.开启防火墙

systemctl enable --now firewalld

firewall-cmd --add-port={22,80}/tcp --zone=public --permanent

firewall-cmd --reload



keepalived-LVS_01配置:

! Configuration File for keepalived

#第一步:全局配置 定义id

#第二步: 配置LVS实例

#2.1 在指定网卡上配VIP,指定角色(master/backup)

#2.2 创建一个LVS实例,指定调度算法和LVS工作模式

#2.3 将rs后端服务器添加到LVS实例中等待被调度


#======================全局配置

global_defs { #全局定义部分(一般不用告警模块)


    router_id LVS_01 #主机标识,用于邮件通知,可以用主机名

}      


#======================LVS-01(VIP+RIP)

vrrp_instance LVS_1 { #vrrp 实例部分定义,自定义名称

    state MASTER #指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP

    interface ens33 #网卡设置,lvs将会绑定到这个网卡上,realserver绑定在回环口。区别:lvs对访问为外,realserver为内不易暴露本机信息

    virtual_router_id 50 #虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致

    priority 90 #定义优先级,数字越大,优先级越高。范围1-254

    advert_int 1 #设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样

    authentication { #设置验证类型和密码,两个节点必须一致

    auth_type PASS #设置类型

    auth_pass 1111 #设置密码

    }

    virtual_ipaddress { #设置VIP地址,可以设置多个VIP地址,每行一个

        192.168.10.166

    }

 

#[等价于]ipvsadm -A -t ip port -s rr                           

virtual_server 192.168.10.166 80 { #定义RealServer对应的VIP及服务端口,IP和端口之间用空格隔开

    delay_loop 6 #每隔6秒查询realserver状态

    lb_algo rr #后端调试算法(load balancing algorithm)

    lb_kind DR #LVS调度类型NAT/DR/TUN

    #persistence_timeout 60 同一IP的连接60秒内被分配到同一台realserver

    protocol TCP #用TCP协议检查realserver状态

    #RS后端服务器的信息,参与调度的RS

#等价于ipvsadm -a -t lvs_ip_port -r rs ip  -w 1 -m

    real_server 192.168.10.162 80 {

        weight 1 #权重,最大越高,lvs就越优先访问

        TCP_CHECK { #keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC

            connect_timeout 10 #10秒无响应超时

            retry 3 #重连次数3次

            delay_before_retry 3 #重连间隔时间

            connect_port 80          #健康检查realserver的端口

        }    

    }

    real_server 192.168.10.163 80 {

        weight 1 #权重,最大越高,lvs就越优先访问

         TCP_CHECK {                         #keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC

             connect_timeout 10 #10秒无响应超时

             retry 3 #重连次数3次

            delay_before_retry 3 #重连间隔时间

             connect_port 80 #健康检查realserver的端口

         }        

     }

}










LVS-02

1.配网络

静态ip和DNS

2.关闭防火墙和selinux

systemctl disable firewalld(搭建完以后再做防火墙策略)

sed -i 's\SELINUX=enforcing\SELINUX=disabled\g' /etc/selinux/config

setenforce 0

3.安装lvsadm和keepalived

yum install ipvsadm  keepalived -y

4.查看内核是否支持ip_vs

sudo lsmod | grep ip_vs

#如果不支持:先更新以下内核

#yum update -y

5.编写keepalived的配置文件(主从或者主主两个keepalived的配置文件基本相同,除了id和VRRP名称不同其他配置一致)

图片

6.启动keepalived

systemctl enable --now  keepalived

7.检查ipvs规则是否创建

ipvsadm -Ln

图片

8.访问VIP看是否成功

图片

9.开启防火墙

systemctl enable --now firewalld

firewall-cmd --add-port={22,80}/tcp --zone=public --permanent

firewall-cmd --reload


keepalived-LVS_02配置:! Configuration File for keepalived#第一步:全局配置 定义id#第二步: 配置LVS实例#2.1 在指定网卡上配VIP,指定角色(master/backup)#2.2 创建一个LVS实例,指定调度算法和LVS工作模式#2.3 将rs后端服务器添加到LVS实例中等待被调度
#======================全局配置global_defs { #全局定义部分(一般不用告警模块)
    router_id LVS_02 #主机标识,用于邮件通知,可以用主机名}      
#======================LVS-01(VIP+RIP)vrrp_instance LVS_1 { #vrrp 实例部分定义,自定义名称    state MASTER #指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP    interface ens33 #网卡设置,lvs将会绑定到这个网卡上,realserver绑定在回环口。区别:lvs对访问为外,realserver为内不易暴露本机信息    virtual_router_id 51 #虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致    priority 50 #定义优先级,数字越大,优先级越高。范围1-254    advert_int 1 #设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样    authentication { #设置验证类型和密码,两个节点必须一致    auth_type PASS #设置类型    auth_pass 1111 #设置密码    }    virtual_ipaddress { #设置VIP地址,可以设置多个VIP地址,每行一个        192.168.10.166    } #[等价于]ipvsadm -A -t ip port -s rr                           virtual_server 192.168.10.166 80 { #定义RealServer对应的VIP及服务端口,IP和端口之间用空格隔开    delay_loop 6 #每隔6秒查询realserver状态    lb_algo rr #后端调试算法(load balancing algorithm)    lb_kind DR #LVS调度类型NAT/DR/TUN    #persistence_timeout 60 同一IP的连接60秒内被分配到同一台realserver    protocol TCP #用TCP协议检查realserver状态    #RS后端服务器的信息,参与调度的RS#等价于ipvsadm -a -t lvs_ip_port -r rs ip  -w 1 -m    real_server 192.168.10.162 80 {        weight 1 #权重,最大越高,lvs就越优先访问        TCP_CHECK { #keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC            connect_timeout 10 #10秒无响应超时            retry 3 #重连次数3次            delay_before_retry 3 #重连间隔时间            connect_port 80          #健康检查realserver的端口        }        }    real_server 192.168.10.163 80 {        weight 1 #权重,最大越高,lvs就越优先访问         TCP_CHECK {                         #keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC             connect_timeout 10 #10秒无响应超时             retry 3 #重连次数3次            delay_before_retry 3 #重连间隔时间             connect_port 80 #健康检查realserver的端口         }             }}



web-01

1.配网络

静态ip和DNS

2.关闭防火墙和selinux

systemctl disable firewalld(搭建完以后再做防火墙策略)

sed -i 's\SELINUX=enforcing\SELINUX=disabled\g' /etc/selinux/config

setenforce 0

3.安装nginx

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

yum install wget -y

cd /usr/local/src

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

wget http://nginx.org/download/nginx-1.20.2.tar.gz

tar -zxvf pcre-8.35.tar.gz

cd pcre-8.35

./configure

make && make install

tar -zxvf nginx-1.20.2.tar.gz

cd nginx-1.20.2

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

make && make install

groupadd nginx && useradd -g nginx nginx

vim /usr/local/webserver/nginx/conf/nginx.conf

...

user  nginx nginx;

....

启动nginx

/usr/local/webserver/nginx/sbin/nginx

4.编写nginx测试效果,直接改配置文件即可

location / {

            default_type text/html;

            #root   html;

            #index  index.html index.htm;

            return 200 "I am web01";

        }

5.配置VIP,使用脚本开机自动生效,配置在回环网卡上

vim /etc/init.d/vip_lo

#!/bin/bash

# chkconfig: 23456 10 90

# description: vip_bind_lo

#开机自动绑定viP到lo网卡上

ifconfig lo:lo1 192.168.10.166 netmask 255.255.255.255 up

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

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

chmod 777 /etc/init.d/vip_lo

sudo chkconfig --add vip_lo

/etc/init.d/vip_lo

9.开启防火墙

systemctl enable --now firewalld

firewall-cmd --add-port={22,80}/tcp --zone=public --permanent

firewall-cmd --reload

web-02

1.配网络

静态ip和DNS

2.关闭防火墙和selinux

systemctl disable firewalld(搭建完以后再做防火墙策略)

sed -i 's\SELINUX=enforcing\SELINUX=disabled\g' /etc/selinux/config

setenforce 0

3.安装nginx

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

yum install wget -y

cd /usr/local/src

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

wget http://nginx.org/download/nginx-1.20.2.tar.gz

tar -zxvf pcre-8.35.tar.gz

cd pcre-8.35

./configure

make && make install

tar -zxvf nginx-1.20.2.tar.gz

cd nginx-1.20.2

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

make && make install

groupadd nginx && useradd -g nginx nginx

vim /usr/local/webserver/nginx/conf/nginx.conf

...

user  nginx nginx;

....

启动nginx

/usr/local/webserver/nginx/sbin/nginx

4.编写nginx测试效果,直接改配置文件即可

location / {

            default_type text/html;

            #root   html;

            #index  index.html index.htm;

            return 200 "I am web01";

        }

5.配置VIP,使用脚本开机自动生效,配置在回环网卡上

vim /etc/init.d/vip_lo

#!/bin/bash

# chkconfig: 23456 10 90

# description: vip_bind_lo

#开机自动绑定viP到lo网卡上

ifconfig lo:lo1 192.168.10.166 netmask 255.255.255.255 up

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

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

chmod 777 /etc/init.d/vip_lo

chkconfig --add vip_lo

/etc/init.d/vip_lo

9.开启防火墙

systemctl enable --now firewalld

firewall-cmd --add-port={22,80}/tcp --zone=public --permanent

firewall-cmd --reload

三、其他场景

  • keepalived+mysql高可用

  • keepalived+LVS+apache

...




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7453.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: