mpa-powered-by="yiban.io" style="margin-top: 0px;margin-bottom: 0px;padding: 0px;outline: 0px;max-width: 100%;clear: both;min-height: 1em;color: rgba(0, 0, 0, 0.9);font-family: 'PingFang SC', system-ui, -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif;font-size: 17px;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);text-align: center;visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important">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
...
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/7453.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~