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许可证授权发行,可以在商业和研究领域中…

spring-boot(整合jdbc)

JDBC JDBC 的全称是Java数据库连接(Java Database Connectivity,简称JDBC),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。 提供了诸如查询和更新数据库中数据的方法,JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。 JDBC API …

金融标准体系

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

keil编译报错:sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty

文章目录 一、问题背景二、可能原因内存池配置不当&#xff1a;内存泄漏&#xff1a;并发访问冲突&#xff1a; 三、解决方案优化内存池配置&#xff1a;检查并修复内存泄漏&#xff1a;加强并发访问控制&#xff1a;优化代码设计&#xff1a; 四、总结 STM32 sys_timeout: tim…

(实战)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;原则&…

超子物联网HAL库笔记:[汇总]

介绍 此笔记为观看B站UP&#xff1a;超子说物联网所写&#xff0c;感谢老师。老师的架构真的特别好&#xff01; 我在学习HAL库之前有标准库基础&#xff0c;所以学习稍快&#xff0c;但会尽量详细记录 笔记和项目文件在gitee开源了 大家可以在我的gitee仓库中下载笔记源文…

[java][基础]JSP

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

Unity WebGL项目中,如果想在网页端配置数字人穿红色上衣,并让桌面端保持同步

在Unity WebGL项目中&#xff0c;如果想在网页端配置数字人穿红色上衣&#xff0c;并让桌面端保持同步&#xff0c;可以利用以下方法来记录和应用配置信息 1. 配置存储方式 使用JSON格式存储配置信息&#xff0c;这样的配置文件可以方便地在不同平台间共享和读取。配置文件…

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

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

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

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

vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,

在使用 Vue 和 Django 进行前后端分离开发时&#xff0c;如果遇到 AxiosError: Network Error 的错误&#xff0c;通常可能是由于以下几种原因引起的。下面列出了一些常见的原因和解决方案。 1. CORS&#xff08;跨源资源共享&#xff09;问题 当你的 Vue 应用和 Django 后端…

metasploit/modules/exploits 有哪些模块,以及具体使用案例

Metasploit框架的exploits模块用于利用已知漏洞执行代码&#xff0c;通常用于获取远程控制或执行特定任务。以下是一些常见的exploits模块及其使用案例&#xff1a; 1. Windows漏洞利用 exploit/windows/smb/ms17_010_eternalblue&#xff1a;利用SMBv1漏洞&#xff08;永恒之…

【深度学习】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…

计算机毕业设计——ssm基于java智能选课系统的设计与实现演示录像2021

作者&#xff1a;程序媛9688开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0…