centos7配置keepalive+lvs

拓扑图

  • 用户访问www.abc.com解析到10.4.7.8,防火墙做DNAT将访问10.4.7.8:80的请求转换到VIP 172.16.10.7:80,负载均衡器再将请求转发到后端web服务器。
    请添加图片描述

实验环境
在这里插入图片描述
VIP:负载均衡服务器的虚拟ip地址
LB :负载均衡服务器
realserver:后端真实服务器

一、配置防火墙,先让内网服务器能上网

1、先确认网关服务器能上网

(1) 查看网关服务器ip地址
[root@gateway ~]# ifconfig ens33 |grep -w "inet"inet 10.4.7.8  netmask 255.255.255.0  broadcast 10.4.7.255
[root@gateway ~]# ifconfig ens37 |grep -w "inet"inet 172.16.10.8  netmask 255.255.255.0  broadcast 172.16.10.255(2) ping百度
[root@gateway ~]# ping www.baidu.com -c 2
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=128 time=9.51 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=128 time=8.90 ms

2、防火墙开启路由转发,并配置NAT规则

(1) 开启路由转发
[root@gateway ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
[root@gateway ~]# sysctl -p(2) 配置SNAT让来自172.16.10.0/24的内网用户能上网(公网ip不固定就是用自动寻路)
[root@gateway ~]# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -j  MASQUERADE(3) 配置DNAT让访问目标地址是10.4.7.8:80的请求,跳转到VIP172.16.10.7:80
[root@gateway ~]# iptables -t nat -A PREROUTING -p tcp  -d 10.4.7.8 --dport 80 -j DNAT --to-destination 172.16.10.7:80
[root@gateway ~]# service iptables save

3、将所有内网服务器网关指向gateway服务器内网ip

(1) lvs-master
[root@lvs-master ~]# echo -e "GATEWAY=172.16.10.8\nDNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@lvs-master ~]# systemctl restart network
[root@lvs-master ~]# ping www.baidu.com
PING www.wshifen.com (104.193.88.77) 56(84) bytes of data.
64 bytes from 104.193.88.77 (104.193.88.77): icmp_seq=1 ttl=127 time=198 ms(2) lvs-slave
[root@lvs-slave ~]# echo -e "GATEWAY=172.16.10.8\nDNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@lvs-slave ~]# systemctl restart network
[root@lvs-slave ~]# ping www.baidu.com
PING www.wshifen.com (104.193.88.77) 56(84) bytes of data.
64 bytes from 104.193.88.77 (104.193.88.77): icmp_seq=2 ttl=127 time=218 ms(3) web1
[root@web1 ~]# echo -e "GATEWAY=172.16.10.8\nDNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33
[root@web1 ~]# systemctl restart network 
[root@web1 ~]# ping www.baidu.com
PING www.wshifen.com (104.193.88.77) 56(84) bytes of data.
64 bytes from 104.193.88.77 (104.193.88.77): icmp_seq=1 ttl=127 time=221 ms(4) web2
[root@web2 ~]# echo -e "GATEWAY=172.16.10.8\nDNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33
[root@web2 ~]# systemctl restart network
[root@web2 ~]# ping www.baidu.com
PING www.wshifen.com (104.193.88.77) 56(84) bytes of data.
64 bytes from 104.193.88.77 (104.193.88.77): icmp_seq=1 ttl=127 time=209 ms

二、配置keepalive+lvs

1、安装keepalived+lvs(keepalived和lvs 在一台服务器上,主备都安装)

(1) lvs-master
[root@lvs-master ~]# yum -y install keepalived   ipvsadm
[root@lvs-master ~]# keepalived -v                                     # 查看keepalived版本号
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
[root@lvs-master ~]# ipvsadm -v                                        # 查看ipvsadm版本号
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)(2) lvs-slave
[root@lvs-slave ~]# yum -y install keepalived   ipvsadm
[root@lvs-slave ~]# keepalived -v
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
[root@lvs-slave ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

2、配置keepalived+lvs主、备(keepalived是专门为lvs设计的)

  • 设置非抢占模式只在master上配置就可以
(1) 配置 lvs-master
[root@lvs-master ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@lvs-master ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {router_id LVS_DEVEL_01   # keepalive标识符,主备不能相同
}
vrrp_instance VI_1 {        # VRRP实例,主备必须相同state MASTER            # 角色,MASTER为主,BACKUP为备#state BACKUP            # 如果是非抢占模式要两边都为BACKUPinterface ens33         # 监听的网卡virtual_router_id 51    # 虚拟路由标识,主备必须相同priority 150            # 优先级,主要高于备#nopreempt               # 开启非抢占模式(在优先级高的上面配置)advert_int 1            # 主备同步检查间隔1秒authentication {        # 主备认证密码auth_type PASSauth_pass 1111}virtual_ipaddress {     172.16.10.7         # 设置虚拟ip地址}
}
################ 上面是keepalived设置,下面是lvs设置 ##################
virtual_server 172.16.10.7 80 {       # 基于上面的VIP创建虚拟服务器delay_loop 6                      # 健康检查时间lb_algo rr                        # 调度算法rr为轮训lb_kind DR                        # 负载均衡模式DR路由模式persistence_timeout 50            # 会话保持时间protocol TCP                      # 转发协议类型real_server 172.16.10.5 80 {      # 设置第一台后端web服务器weight 1                      # 设置web服务器权重HTTP_GET {                    # 设置健康检查页面,健康检查方式 常见有 TCP_CHECK, HTTP_GET, SSL_GET, MISC_CHECK(自定义脚本)url {path /index.html# digest的值这样生成 genhash -s 172.16.10.5 -p 80 -u /index.htmldigest d8cf4a4aed83e042d2b147561f1c83df}connect_timeout 8             # 设置响应超时时间nb_get_retry 3                # 设置超时重试次数delay_before_retry 3          # 设置超时重试间隔}}real_server 172.16.10.6 80 {      # 设置第二台后端web服务器weight 1                      # 设置web服务器权重HTTP_GET {                    # 设置健康检查页面url {path /index.html# digest的值这样生成 genhash -s 172.16.10.6 -p 80 -u /index.htmldigest  0583558e12e704650cd8bd72e0274347}connect_timeout 8             # 设置响应超时时间nb_get_retry 3                # 设置超时重试次数delay_before_retry 3          # 设置超时重试间隔}}
}---------------------------------------------------------------------------------------------------(2) 配置lvs-slave
[root@lvs-slave ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@lvs-slave ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {router_id LVS_DEVEL_02   # keepalive标识符,主备不能相同
}
vrrp_instance VI_1 {        # VRRP实例,主备必须相同state BACKUP             # 角色,MASTER为主,BACKUP为备interface ens33         # 监听的网卡virtual_router_id 51    # 虚拟路由标识,主备必须相同priority 90             # 优先级,主要高于备advert_int 1            # 主备同步检查间隔1秒authentication {        # 主备认证密码auth_type PASSauth_pass 1111}virtual_ipaddress {     172.16.10.7   # 设置虚拟ip地址}
}################ 上面是keepalived设置,下面是lvs设置 ##################
virtual_server 172.16.10.7 80 {       # 根据上面的VIP创建虚拟服务器delay_loop 6                      # 健康检查时间lb_algo rr                        # 调度算法rr为轮训lb_kind DR                        # 负载均衡模式DR路由模式persistence_timeout 50            # 会话保持时间protocol TCP                      # 转发协议类型real_server 172.16.10.5 80 {      # 设置第一台后端web服务器weight 1                      # 设置web服务器权重HTTP_GET {                    # 设置健康检查页面url {path /index.html# digest的值这样生成 genhash -s 172.16.10.5 -p 80 -u /index.htmldigest  d8cf4a4aed83e042d2b147561f1c83df}connect_timeout 8             # 设置响应超时时间nb_get_retry 3                # 设置超时重试次数delay_before_retry 3          # 设置超时重试间隔}}real_server 172.16.10.6 80 {      # 设置第二台后端web服务器weight 1                      # 设置web服务器权重HTTP_GET {                    # 设置健康检查页面url {path /index.html# digest的值这样生成 genhash -s 172.16.10.6 -p 80 -u /index.htmldigest  0583558e12e704650cd8bd72e0274347}connect_timeout 8             # 设置响应超时时间nb_get_retry 3                # 设置超时重试次数delay_before_retry 3          # 设置超时重试间隔}}
}

三、配置nginx服务器

1、配置web1

(1) 安装nginx
[root@web1 ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@web1 ~]# yum -y install nginx(2) 增加虚拟主机
[root@web1 ~]# cat /etc/nginx/conf.d/www_abc_com.conf 
server {listen       80;server_name  www.abc.com;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;}
}
[root@web1 ~]# echo "web1-172.16.10.5" > /usr/share/nginx/html/index.html(3) 配置vip,以及抑制ARP广播脚本
[root@web1 ~]# cat /etc/init.d/lvs_realserver 
#!/bin/sh  
VIP=172.16.10.7Usage ()
{echo "Usage:`basename $0` (start|stop)"exit 1
}if [ $# -ne 1 ];thenUsage
ficase $1 instart)echo "reparing for Real Server"echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announceecho "1" >/proc/sys/net/ipv4/conf/ens33/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/ens33/arp_announce/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255  up
#/sbin/route add -host $VIP dev lo:0;;stop)/sbin/ifconfig lo:0 downecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "0" >/proc/sys/net/ipv4/conf/ens33/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/ens33/arp_announceecho "stop Real Server";; *)Usage
esac

2、配置web2

(1) 安装nginx
[root@web2 ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@web2 ~]# yum -y install nginx(2) 增加虚拟主机
[root@web2 ~]# cat /etc/nginx/conf.d/www_abc_com.conf 
server {listen       80;server_name  www.abc.com;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;}
}
[root@web2 ~]# echo "web2-172.16.10.6" > /usr/share/nginx/html/index.html(3) 编写绑定vip和抑制ARP广播脚本
[root@web2 ~]# cat /etc/init.d/lvs_realserver 
#!/bin/sh  
VIP=172.16.10.7Usage ()
{echo "Usage:`basename $0` (start|stop)"exit 1
}if [ $# -ne 1 ];thenUsage
ficase $1 instart)echo "reparing for Real Server"echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announceecho "1" >/proc/sys/net/ipv4/conf/ens33/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/ens33/arp_announce/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255  up
#/sbin/route add -host $VIP dev lo:0;;stop)/sbin/ifconfig lo:0 downecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "0" >/proc/sys/net/ipv4/conf/ens33/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/ens33/arp_announceecho "stop Real Server";; *)Usage
esac

四、启动服务器

(1) 启动keepalive和lvs
[root@lvs-master ~]# systemctl start keepalived
[root@lvs-slave ~]# systemctl start keepalived(2) 启动nginx、启动绑定VIP并抑制ARP广播的脚本
[root@web1 ~]# systemctl start nginx
[root@web1 ~]# /etc/init.d/lvs_realserver start
[root@web1 ~]# ifconfig lo:0 |grep "inet"inet 172.16.10.7  netmask 255.255.255.255   # 已经绑定vip[root@web2 ~]# systemctl start nginx
[root@web2 ~]# /etc/init.d/lvs_realserver start
[root@web2 ~]# ifconfig lo:0 |grep "inet"inet 172.16.10.7  netmask 255.255.255.255(3) 查看keepalived当前的vip状态和监听的后端web节点
[root@lvs-master ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UPinet 172.16.10.3/24 brd 172.16.10.255 scope global ens33   # 这是本机地址inet 172.16.10.7/32 scope global ens33    # keepalived已经绑定VIP成功[root@lvs-master ~]# ipvsadm -L
TCP  lvs-master:http rr persistent 50-> 172.16.10.5:http             Route   1      3          0     # 监听后端web1      -> 172.16.10.6:http             Route   1      0          0     # 监听后端web2

五、客户端绑定hosts,并访问http://www.abc. com

1、设置hosts

172.16.10.7 www.abc.com

2、访问测试(由于是轮训rr算法,多次访问才会访问到web1上面)
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv python笔记

OpenCV课程 OpenCV其实就是一堆C和C语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法。 OpenCV的全称是Open Source Computer Vision Library,是一个开放源代码的计算机视觉库OpenCV最初由英特尔公司发起并开发,以BSD许可证授权发行,可以在商业和研究领域中…

金融标准体系

目录 基本原则 标准体系结构图 标准明细表 金融标准体系下载地址 基本原则 需求引领、顶层设计。 坚持目标导向、问题导向、结果 导向有机统一&#xff0c;构建支撑适用、体系完善、科学合理的金融 标准体系。 全面系统、重点突出。 以金融业运用有效、保护有力、 管理高…

(实战)WebApi第10讲:Swagger配置、RESTful与路由重载

一、Swagger配置 1、导入SwashBuckle.AspNetCore包 2、在.NET Core 5框架里的startup.cs文件里配置swagger 3、在.NET Core 6框架里的Program.cs文件里配置swagger 二、RESTful风格&#xff1a;路由重载&#xff0c;HttpGet()括号中加参数 &#xff08;1&#xff09;原则&…

[java][基础]JSP

目标&#xff1a; 理解 JSP 及 JSP 原理 能在 JSP中使用 EL表达式 和 JSTL标签 理解 MVC模式 和 三层架构 能完成品牌数据的增删改查功能 1&#xff0c;JSP 概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的…

数智税务 | 数电票:带来税务管理五大新挑战、绘就智慧税务征管新蓝图

目录 数电票&#xff0c;带来税务管理五大新挑战 1“集全” 2“管全” 3“算全” 4“备全” 5“控全” 数电票&#xff0c;绘就智慧税务征管新蓝图 1两化 2三端 3四融合 4变革征管方式 5优化征管流程 6提升征管效能 结语 数电票&#xff0c;带来税务管理五大新挑…

氢氧化铝改性打散机、分散机、包覆机、球磨机

表面改性是指在氢氧化铝颗粒表面吸附或包覆一层或多层物质&#xff0c;以改变其表面性质&#xff0c;增强其与基体材料的相容性和界面结合力。 表面改性方法主要分为物理法和化学法&#xff1a; 1.物理法&#xff1a;使用表面活性剂如高级脂肪酸、醇、胺、酯等进行表面包覆处…

【深度学习】Bert下载和使用(以bert-base-uncased为例)

【深度学习】Bert下载和使用&#xff08;以bert-base-uncased为例&#xff09; 代码报错报错原因解决方法解决步骤1.进入Hugging Face&#xff0c;检索bert-base-uncased2.点击Files and versions3.下载文件4.下载的文件放入文件夹5.代码修改 代码报错 bert BertModel.from_p…

JupyterLab,极其强大的下一代notebook!

JupyterLab简介 JupyterLab是Jupyter主打的最新数据科学生产工具&#xff0c;某种意义上&#xff0c;它的出现是为了取代Jupyter Notebook。不过不用担心Jupyter Notebook会消失&#xff0c;JupyterLab包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环…

MS01SF1 精准测距UWB模组助力露天采矿中的人车定位安全和作业效率提升

在当今矿业行业&#xff0c;随着全球对资源需求的不断增加和开采难度的逐步提升&#xff0c;传统的作业方式面临着越来越多的挑战。露天矿山开采&#xff0c;因其大规模的作业环境和复杂的地形特点&#xff0c;面临着作业人员的安全风险、设备调度的高难度以及资源利用率低下等…

使用 Github 进行项目管理

GitHub 是一个广泛使用的代码托管和协作平台&#xff0c;它提供了强大的工具来支持项目管理和团队协作。在项目开发和工作中&#xff0c;避免不了 Github 的使用&#xff0c;然鹅我一直没有稍微系统地学习过 github 的整个工作流程&#xff0c;对这些操作都是一知半解的&#x…

servlet开发

一、Servelet &#xff08;一&#xff09;Servelet概述 1.概念&#xff1a;Severlet是一门动态web资源开发技术。 2.本质&#xff1a;Severlet本质是一段Java程序&#xff0c;但和Java程序不同的是&#xff0c;Severlet程序无法独立运行&#xff0c;需要放服务器中&#xff…

ArcGIS003:ArcMap常用操作0-50例动图演示

摘要&#xff1a;本文以动图形式介绍了ArcMap软件的基本操作&#xff0c;包括快捷方式创建、管理许可服务、操作界面元素&#xff08;如内容列表、目录树、搜索窗口、工具箱、Python窗口、模型构建器窗口等&#xff09;的打开与关闭、位置调整及合并&#xff0c;设置默认工作目…

链表|反转链表|移除链表元素|链表的中间节点|返回倒数第k个节点|合并两个有序链表(C)

206. 反转链表 用两个指针 p1指向空&#xff0c;p2指向第一个节点 p2的next指向p1&#xff0c;把方向调过来 因为p2的next指向p1&#xff0c;会丢掉后面的节点&#xff0c;所以需要三个节点 前两个指针是为了反转&#xff0c;后一个指针是为了找到下一个节点 p2给给p1&a…

GitGraphPro 图管理系统

1.产品介绍 产品介绍方案 产品名称: GitGraphPro 图管理系统 主要功能: 智能图谱构建版本控制与协作数据分析与可视化自定义模板与导出功能介绍: 1. 智能图谱构建 具体作用:GitGraphPro 利用先进的算法,自动从项目数据

一:时序数据库-Influx应用

目录 0、版本号 1、登录页面 2、账号基本信息 3、数据库案例 4、可视化 5、java案例 0、版本号 InfluxDB v2.4.0 1、登录页面 http://127.0.0.1:8086/signin 账号&#xff1a;自己账号 密码&#xff1a;自己密码 2、账号基本信息 查看用户id和组织id&#xff01;&…

python脚本:十六进制数据小端序转大端序

大多数机器的存储方式都是小端排序&#xff0c;小端序指的是数据的高位&#xff08;偏左边的&#xff09;放在内存中的高地址&#xff08;偏右边的&#xff09;处&#xff0c;这样会导致存放好的数据对于我们看来好像是“倒过来”的 大端序则是我们看上去从左到右的正常排序 例…

流场主动流动控制

对于流场的主动控制而言&#xff0c;其难点主要集中在强化学习的环境搭建过程&#xff0c;如何建立数值仿真与强化学习的信息交互是研究过程中的拦路虎。经过几个星期的研究&#xff0c;已基本实现由pycharm程序数据端向star ccm端的数据传递。其主要过程包括如下过程&#xff…

Django-文件上传

定义&#xff1a; 上传规则-前端【html】&#xff1a; 上传规则-后端【Django】&#xff1a; urlpatterns [path(upload,views.test_upload) ] 例子&#xff1a; settings添加: MEDIA_URL /media/ MEDIA_ROOT os.path.join(BASE_DIR, media) 主路由&#xff1a; urlpa…

kafka-console-ui的简介及安装使用

kafka-console-ui的简介及安装使用 一、kafka-console-ui的简介二、安装kafka-console-ui2.1 源码安装2.2 docker安装 三、kafka-console-ui功能使用3.1、功能特性3.2、 功能介绍3.2.1 集群3.2.2 topic3.2.3 消费组3.2.4 Acl3.2.5 运维 一、kafka-console-ui的简介 kafka-cons…

ONLYOFFICE 8.2 版本产品评测——遥遥领先

知孤云出岫-CSDN博客 目录 产品介绍——篇【1】 一.关于 ONLYOFFICE 桌面编辑器 二.关于 ONLYOFFICE 协作空间 三.关于 ONLYOFFICE 文档 四.关于 ONLYOFFICE的版本介绍 产品新功能——篇【2】 一.关于 ONLYOFFICE的新增功能介绍 二.OLE FICE文档概述 三.PDF编辑器更新 …