IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> LVS+Keepalived的详细教程 -> 正文阅读

[系统运维]LVS+Keepalived的详细教程

Keepalived

Keepalived概述

  • 调度器出现单点故障,如何解决
  • Keeoalived实现了高可用集群
  • Keepalived最初是为LVS设计的,专门监控哥服务器节点的状态
  • Keepalived后来加入了VRRP功能,防止单点故障

Keepalived高可用服务器群

问题:

准备三台Linux服务器,其中两台web服务器,并部署Keepalived高可用软件,一台作为客户端主机,实现以下功能

方案:

使用3台虚拟机,2台作为web服务器,不部署Keepalived,1台作为客户端,拓扑如下所示,配置表如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cVcGLcW-1634566406928)(E:/Typort/image-20211018163650575.png)]

主机名网络配置
proxy192.168.4.5
web1192.168.4.100
VIP:192.168.4.80(keepalived会自动配置)
web2192.168.4.200
VIP:192.168.4.80(keepalived会自动配置)

步骤

步骤一:配置网络环境

1)设置web1服务器网络参数,配置web服务

nmcli connection add type ethernet con-name ens192 ifname ens192
nmcli connection modify ens192 ipv4.add 192.168.4.100/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192
yum -y install httpd
echo "web1 我是192.168.4.100" > /var/www/html/index.html
systemctl restart httpd

2)设置web2服务器网络参数,配置web服务

nmcli connection add type ethernet con-name ens192 ifname ens192
nmcli connection modify ens192 ipv4.add 192.168.4.200/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192
yum -y install httpd
echo "web2 我是192.168.4.200" > /var/www/html/index.html
systemctl restart httpd

3)设置proxy主机的网络参数(如果已经设置请忽略)

nmcli connection add type ethernet con-name ens192 ifname ens192
nmcli connection modify ens192 ipv4.add 192.168.4.5/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192

步骤二:安装Keepalived软件

注意:两台web服务器做相同的操作

web1
yum -y install keepalived
web2
yum -y install keepalived

步骤三:部署Keepalived服务

1)修改web1服务器Keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
  
global_defs {
   notification_email {
     admin@ceshi.com.cn    #设置报警收件人邮箱,可以不做修改
   }
   notification_email_from ka@localhost     #设置发件人,在实验环境可以不做修改
   smtp_server 127.0.0.1         #定义邮件服务器
   smtp_connect_timeout 30
   router_id web1            #设置路由ID号,修改id以作标识
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER         #主服务器为master(备服务器需要修改为backup)
    interface ens192     #定义网络接口
    virtual_router_id 51  #主备服务器VRID号必须一致
    priority 100             #服务器优先级,优先级高优先获取VIP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #主备服务器密码必须一致,用密码来区分是否为同一个集群
    }
    virtual_ipaddress {   #谁是主服务器谁获得该VIP(修改为我们需要的IP)
        192.168.4.80
    }
}
目前我们先测试keepalived的vrrp功能,所以下面的配置文件我们可以删除

2)修改web2服务器Keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
  
global_defs {
   notification_email {
     admin@ceshi.com.cn    #设置报警收件人邮箱,可以不做修改
   }
   notification_email_from ka@localhost     #设置发件人,在实验环境可以不做修改
   smtp_server 127.0.0.1         #定义邮件服务器
   smtp_connect_timeout 30
   router_id web2            #设置路由ID号,修改id以作标识
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP         #主服务器为master(备服务器需要修改为backup)
    interface ens192     #定义网络接口
    virtual_router_id 51  #主备服务器VRID号必须一致
    priority 90            #服务器优先级,优先级高优先获取VIP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #主备服务器密码必须一致,用密码来区分是否为同一个集群
    }
    virtual_ipaddress {   #谁是主服务器谁获得该VIP(修改为我们需要的IP)
        192.168.4.80
    }
}

3)启动服务

web1
systemctl start keepalived
web2
systemctl start keepalived

4)配置防火墙和SELinux

启动keepalived会自动添加一个drop多的防火墙规则,需要清空

web1
iptables -F
setenforce 0
systemctl stop firewalld
web2
iptables -F
setenforce 0
systemctl stop firewalld

步骤四:测试

1)登录两台web服务器查看VIP信息

web1
ip a s
web2
ip a s  #因为是备,所以VIP在正常情况下在web1,当web1出现故障,web2自动获得VIP

2)客户端访问

客户端使用curl命令连接http://192.168.4.80,查看web页面。关闭web1服务器的网卡,客户端再次访问http://192.168.4.80 ,验证是否可以正常访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SciR6ORD-1634566406930)(E:/Typort/image-20211018171817322.png)]

关闭web1的网卡,再次进行测试

这时候可以在web2上看到VIP已经成功转移

在这里插入图片描述

再次测试

在这里插入图片描述

重新激活web1的网卡,web1的优先级比web2高,所以再次访问页面页面应该成为web1的页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zx9DkDd5-1634566406935)(E:/Typort/image-20211018172505467.png)]

Keepalived+LVS服务器

问题

使用Keepalived为LVS调度器提供高可用功能,放hi调度器单点故障,为用户提供web服务

  • LVS1调度器真实IP地址为192.168.4.5
  • LVS2调度器真实IP地址为192.168.4.6
  • 服务器VIP地址设置为192.168.4.15
  • 真实web服务器地址分别为192.168.4.100、192.168.4.200
  • 使用加权轮询算法,真实web服务器权重不同

方案:

使用5台web虚拟机,1台作为客户端主机,2台作为LVS调度器,2台作为Real server,实验拓扑如下所示

在这里插入图片描述

主机名网络配置
client192.168.4.10/24
proxy1192.168.4.5/24
proxy2192.168.4.6/24
web1192.168.4.100/24
web2192.168.4.200/24

注意,所有主机都需要配置IP地址与有效的yum源

步骤:

步骤一:配置网络环境

如果你还是使用上面的web服务器,请关闭刚刚web服务器的keepalived

1)设置web1服务器的网络参数

nmcli connection modify ens192 ipv4.add 192.168.4.100/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192

接下来给web1配置VIP 地址

注意,这里的子网掩码必须为32,网络地址与IP一样,广播地址与IP地址一样

ifconfig lo:10 192.168.4.15 netmask 255.255.255.255 broadcast 192.168.4.15 up

这里因为web1也配置与代理一样的VIP地址,默认肯定会出现地址冲突;sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样也防止地址冲突的问题

web1
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1  #所有网卡
net.ipv4.conf.lo.arp_ignore=1     #lo回环 忽略arp请求包
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
#arp_ignore 忽略掉arp请求包
#arp_announce  声明宣告
#修改内核参数,关闭arp响应
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播
#本机不要向外宣告自己的lo回环地址是192.168.4.15
sysctl -p   #刷新参数

重启网络服务,设置防火墙与SELinux

systemctl restart NetworkManager
ifconfig
systemctl stop firewalld
setenforce 0

2)设置web2服务器的网络参数

nmcli connection modify ens192 ipv4.add 192.168.4.200/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192

接下来给web2配置VIP 地址

注意,这里的子网掩码必须为32,网络地址与IP一样,广播地址与IP地址一样

ifconfig lo:10 192.168.4.15 netmask 255.255.255.255 broadcast 192.168.4.15 up

这里因为web2也配置与代理一样的VIP地址,默认肯定会出现地址冲突;sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样也防止地址冲突的问题

web2
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1  #所有网卡
net.ipv4.conf.lo.arp_ignore=1     #lo回环 忽略arp请求包
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
#arp_ignore 忽略掉arp请求包
#arp_announce  声明宣告
#修改内核参数,关闭arp响应
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播
#本机不要向外宣告自己的lo回环地址是192.168.4.15
sysctl -p   #刷新参数

重启网络服务,设置防火墙与SELinux

systemctl restart NetworkManager
ifconfig
systemctl stop firewalld
setenforce 0

3)配置proxy1主机的网络参数(不配置VIP,由keepalived自动配置)

nmcli connection modify ens192 ipv4.add 192.168.4.5/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual
nmcli connection up ens192

3)配置proxy2主机的网络参数(不配置VIP,由keepalived自动配置)

nmcli connection modify ens192 ipv4.add 192.168.4.6/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.4.2 ipv4.method manual

步骤二:配置后台web服务

1)安装软件,自动逸web页面

web1
yum -y install httpd
echo "web1 我是192.168.4.100" > /var/www/html/index.html
web2
yum -y install httpd
echo "web2 我是192.168.4.200" > /var/www/html/index.html

2)启动web服务器软件

web1
systemctl restart httpd
web2
systemctl restart httpd

步骤三:调度器安装Keepalived与ipvsadm软件

proxy1
yum -y install keepalived
yum -y install ipvsadm
systemctl enable keepalived
ipvsadm -C
proxy2
yum -y install keepalived
yum -y install ipvsadm
systemctl enable keepalived
ipvsadm -C

步骤四:部署keepalived实现LVS-DR模式调度器的高可用

1)LVS1调度器设置keepalived,并启动服务

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
  
global_defs {
   notification_email {
     admin@ceshi.com.cn    #设置报警收件人邮箱,可以不做修改
   }
   notification_email_from ka@localhost     #设置发件人,在实验环境可以不做修改
   smtp_server 127.0.0.1         #定义邮件服务器
   smtp_connect_timeout 30
   router_id lvs1            #设置路由ID号,修改id以作标识
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER         #主服务器为master(备服务器需要修改为backup)
    interface ens192     #定义网络接口
    virtual_router_id 51  #主备服务器VRID号必须一致
    priority 100             #服务器优先级,优先级高优先获取VIP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #主备服务器密码必须一致,用密码来区分是否为同一个集群
    }
    virtual_ipaddress {   #谁是主服务器谁获得该VIP(修改为我们需要的IP)
        192.168.4.15
    }
}
virtual_server 192.168.4.15 80 {     #设置ipvsadm的VIP规则,这里修改为我们的IP与端口哦
    delay_loop 6
    lb_algo wrr              #设置LVS调度算法为wrr
    lb_kind DR 				#设置LVS的模式为DR
  #  persistence_timeout 50
  #注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同的服务器,为了更好的看到实验结果,所以注释掉
    protocol TCP
    real_server 192.168.4.100 80 {   #设置后端web服务器的真实地址
        weight 1      #设置权重
  #健康检查,因为网页十分简单,所以我们这里使用最简单的检查方式TCP_CHECK
        TCP_CHECK {
            connect_timeout 3   #超时时间 
            retry 3  #每隔三秒做一个健康检查
            delay_before_retry 3      #尝试三次     
        }
    }
     real_server 192.168.4.200 80 {   #设置后端web服务器的真实地址
        weight 1      #设置权重
  #健康检查,因为网页十分简单,所以我们这里使用最简单的检查方式TCP_CHECK
        TCP_CHECK {
            connect_timeout 3   #超时时间 
            retry 3  #每隔三秒做一个健康检查
            delay_before_retry 3      #尝试三次     
        }
    }
}

systemctl start keepalived
iptables -F 
ipvsadm -Ln   #查看LVS规则
ip a s

健康检查有三种 TCP_CHECK、HTTP_GET、SSL_GET

TCP_CHECK:只检查端口,不检查网页

HTTP_GET:检查网页与预留md5做哈希校验

SSL_GET:检查网页与预留md5做哈希校验

2)LVS2调度器设置keepalived,并启动服务

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
  
global_defs {
   notification_email {
     admin@ceshi.com.cn    #设置报警收件人邮箱,可以不做修改
   }
   notification_email_from ka@localhost     #设置发件人,在实验环境可以不做修改
   smtp_server 127.0.0.1         #定义邮件服务器
   smtp_connect_timeout 30
   router_id lvs2            #设置路由ID号,修改id以作标识
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP         #主服务器为master(备服务器需要修改为backup)
    interface ens192     #定义网络接口
    virtual_router_id 51  #主备服务器VRID号必须一致
    priority 90             #服务器优先级,优先级高优先获取VIP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   #主备服务器密码必须一致,用密码来区分是否为同一个集群
    }
    virtual_ipaddress {   #谁是主服务器谁获得该VIP(修改为我们需要的IP)
        192.168.4.15
    }
}
virtual_server 192.168.4.15 80 {     #设置ipvsadm的VIP规则,这里修改为我们的IP与端口哦
    delay_loop 6
    lb_algo wrr              #设置LVS调度算法为wrr
    lb_kind DR 				#设置LVS的模式为DR
  #  persistence_timeout 50
  #注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同的服务器,为了更好的看到实验结果,所以注释掉
    protocol TCP
    real_server 192.168.4.100 80 {   #设置后端web服务器的真实地址
        weight 1      #设置权重
  #健康检查,因为网页十分简单,所以我们这里使用最简单的检查方式TCP_CHECK
        TCP_CHECK {
            connect_timeout 3   #超时时间 
            retry 3  #每隔三秒做一个健康检查
            delay_before_retry 3      #尝试三次     
        }
    }
     real_server 192.168.4.200 80 {   #设置后端web服务器的真实地址
        weight 1      #设置权重
  #健康检查,因为网页十分简单,所以我们这里使用最简单的检查方式TCP_CHECK
        TCP_CHECK {
            connect_timeout 3   #超时时间 
            retry 3  #每隔三秒做一个健康检查
            delay_before_retry 3      #尝试三次     
        }
    }
}

systemctl start keepalived
iptables -F 
ipvsadm -Ln   #查看LVS规则
ip a s

步骤四:客户端测试

客户端使用curl命令反复连接http://192.168.4.15 ,查看访问的页面是否会轮询到不同的后端真实服务器

在这里插入图片描述

接下来我们关闭proxy1,这个时候可以看出我们的备份执行成功

在这里插入图片描述

接下来在测试我们关闭web1服务器,看能不能进行健康检查

在这里插入图片描述
由图可以看出以自动为我们删除不可用的web1服务器,实现了健康检查,与高可用

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:18:43  更:2021-10-19 12:20:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:35:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码