lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web

LVS + Keepalived 高可用集群

Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived构建更加方便快捷的节点,进行相关的健康检查,自动移除失效节点,恢复后再重新加入。

在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器。此博客将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站群集平台。

案例如下

346a033e08e957aa156f8ed0b936c39d.png

使用Keepalived构建LVS群集时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)。

环境分析

1)、2个调度器和2个web节点使用同一个网段地址,可以直接和外网通信。为了共享存储的安全性,一般将web节点和存储服务器规划到内网环境,所以web节点必须有两个及以上网卡的接口。

2)、我这里资源有限,也为了配置方便,所以调度器和web节点分别只有两个,在web访问请求量不大的情况下,足够了,但是若访问请求比较大,那么最少要分别配置三个调度器和web节点,如果只有两个web节点的话,访问量又比较大,那么一旦有一个宕机了,那剩下一个独苗必定会因为扛不住激增的访问请求,而被打死。

3)、准备系统映像,以便安装相关服务。

4)、自行配置防火墙策略和除了VIP之外的IP地址(我这里直接关闭了防火墙)。

5)、keepalived会自动调用IP_vs模块,所以无需手动加载。

最终效果

1)、客户端多次访问群集的VIP,得到的是同一个网页。

2)、主调度器宕机后,群集的VIP地址将会自动漂移到从(备份)调度器,此时,所有的调度任务由从调度器进行分配。当主调度器恢复运行后,群集的VIP地址会自动转移回主调度器,主调度器继续工作,从调度器转回备份状态。

3)、web节点宕机后,会被keepalived健康检查功能检测到,从而自动在web节点池中去除宕机的节点,待web节点恢复运行后,会被自动添加到web节点池中。

开始配置LVS+Keepalived高可用群集

部署第一台Web服务器

[root@centos01 ~]# yum -y install httpd  [root@centos01 ~]# echo "www.benet.com" >/var/www/html/index.html   [root@centos01 ~]# systemctl start httpd   [root@centos01 ~]# systemctl enable httpd[root@centos01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo/etc/sysconfig/network-scripts/ifcfg-lo:0           [root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0         DEVICE=lo:0   IPADDR=192.168.100.253   NETMASK=255.255.255.255   ONBOOT=yes[root@centos01 ~]# systemctl restart network   [root@centos01 ~]# ifconfig    lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1  (Local Loopback)        RX packets 488  bytes 39520 (38.5 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 488  bytes 39520 (38.5 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo:0: flags=73  mtu 65536        inet 192.168.100.253  netmask 255.255.255.255        loop  txqueuelen 1  (Local Loopback)[root@centos01 ~]# vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2[root@centos01 ~]# sysctl -p   net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2

部署第二台Web服务器

[root@centos02 ~]# yum -y install httpd  [root@centos02 ~]# echo "www.accp.com" >/var/www/html/index.html   [root@centos02 ~]# systemctl start httpd  [root@centos02 ~]# systemctl enable httpd   [root@centos02 ~]# scp root@192.168.100.10:/etc/sysconfig/network-scripts/ifcfg-lo:0/etc/sysconfig/network-scripts/The authenticity of host '192.168.100.10 (192.168.100.10)' can't be established.ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I.ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b.Are you sure you want to continue connecting (yes/no)? yes  Warning: Permanently added '192.168.100.10' (ECDSA) to the list of known hosts.root@192.168.100.10's password:   ifcfg-lo:0                                                          100%   70    53.3KB/s   00:00[root@centos02 ~]# scp root@192.168.100.10:/etc/sysctl.conf /etc/sysctl.conf            root@192.168.100.10's password:    sysctl.conf                                                         100%  660   304.3KB/s   00:00[root@centos02 ~]# systemctl restart network  [root@centos02 ~]# ifconfig    lo: flags=73  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10        loop  txqueuelen 1  (Local Loopback)        RX packets 496  bytes 40064 (39.1 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 496  bytes 40064 (39.1 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo:0: flags=73  mtu 65536        inet 192.168.100.253  netmask 255.255.255.255        loop  txqueuelen 1  (Local Loopback)[root@centos02 ~]# sysctl -p  net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2

部署主调度器

[root@centos04 ~]# yum -y install keepalived ipvsadm [root@centos04 ~]# vim /etc/sysctl.conf             .....................net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@centos04 ~]# sysctl -p      net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@centos04 ~]# cd /etc/keepalived/[root@centos04 keepalived]# cp keepalived.conf keepalived.conf.bak          [root@centos04 keepalived]# vim keepalived.conf ! Configuration File for keepalivedglobal_defs {   router_id LVS_DEVEL1}vrrp_instance VI_1 {             state MASTER                 interface ens32                virtual_router_id 51    priority 100                advert_int 1               authentication {               auth_type PASS           auth_pass 1111           }    virtual_ipaddress {        192.168.100.253         }}virtual_server 192.168.100.253 80 {     delay_loop 6                lb_algo rr       lb_kind DR       persistence_timeout 50       protocol TCP          real_server 192.168.100.10 80 {               weight 1                         TCP_CHECK {                   connect_port 80               connect_timeout 3                 nb_get_retry 3                   delay_before_retry 3           }    }    real_server 192.168.100.20 80 {                weight 1                    TCP_CHECK {                connect_port 80                 connect_timeout 3               nb_get_retry 3                      delay_before_retry 3           }    }} [root@centos04 ~]# systemctl restart keepalived [root@centos04 ~]# systemctl enable keepalived 

配置从调度器

[root@centos05 ~]# yum -y install ipvsadm keepalived                  [root@centos05 ~]# scp root@192.168.100.40:/etc/sysctl.conf /etc/root@192.168.100.40 s password:            sysctl.conf                                 100%  566   205.8KB/s   00:00[root@centos05 ~]# sysctl -p               net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@centos05 ~]# scp root@192.168.100.40:/etc/keepalived/keepalived.conf/etc/keepalived/             root@192.168.100.40's password:       keepalived.conf                                                                                     100%  803     2.1MB/s   00:00[root@centos05 ~]# vim /etc/keepalived/keepalived.conf    router_id LVS_HA_Backup        state BACKUP             interface ens32    priority 99      [root@centos05 ~]# systemctl start keepalived     [root@centos05 ~]# chkconfig --level 35 keepalived on   

至此,主、从调度器也配置完成了,若需要部署多个从调度器,按照以上这个从(备份)调度器配置即可。

配置客户端访问

客户端测试访问VIP地址:192.168.100.253

4d73ed36dabff9ab7ecff4c807fc2f31.png
d44e8cd4d0f168fe69309346727e6fbb.png

为了测试,所以才在每个web节点准备不同的网页文件,以便测试是否有负载均衡的效果,现在效果已经有了,所以要搭建共享存储服务器,所有的web节点都从共享存储服务器读取网页文件向client提供,以便向client提供相同的网页文件。

接下来开始配置共享存储服务器

配置NFS服务器

[root@centos03 ~]# yum -y install rpcbind nfs-utils   [root@centos03 ~]# mkdir /web   [root@centos03 ~]# echo "www.nfs.com" > /web/index.html              [root@centos03 ~]# vim /etc/exports      /web    192.168.100.10(ro) 192.168.100.20(rw)[root@centos03 ~]# systemctl start rpcbind      [root@centos03 ~]# systemctl enable rpcbind     [root@centos03 ~]# systemctl enable nfs   [root@centos03 ~]# showmount -e 192.168.100.30   Export list for 192.168.100.30:/web 192.168.100.20,192.168.100.10

Web站点挂载共享存储目录

Web节点1服务器挂载共享目录

[root@centos01 ~]# mount 192.168.100.30:/web /var/www/html/          [root@centos01 ~]# cat /var/www/html/index.html  www.nfs.com[root@centos01 ~]# vim /etc/fstab        192.168.100.30:/web     /var/www/html/                            nfs     defaults        0 0[root@centos01 ~]# systemctl restart httpd     

Web节点2服务器挂载共享目录

[root@centos02 ~]# mount 192.168.100.30:/web /var/www/html/          [root@centos02 ~]# cat /var/www/html/index.html        www.nfs.com[root@centos02 ~]# vim /etc/fstab   192.168.100.30:/web     /var/www/html/                            nfs     defaults        0 0[root@centos02 ~]# systemctl restart httpd       

客户端再次访问测试

这次,客户端无论怎么刷新,看到的页面永远都是www.nfs.com

1ea3918e76e5e3830361c2196c6a3ee7.png

案例相关的查询命令

VIP在哪个调度器上,查询该调度器承载VIP地址的物理接口,即可看到VIP地址(VIP地址在备份调度器上查不到的):

[root@centos04 ~]# ip a show dev ens32     ens32:  ate UP groupn 1000    link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff    inet 192.168.100.40/24 brd 192.168.100.255 scope global noprefixroute ens32       valid_lft forever preferred_lft forever    inet 192.168.100.253/32 scope global ens32           valid_lft forever preferred_lft forever    inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute       valid_lft forever preferred_lft forever

查询有哪些web节点

[root@centos04 ~]# ipvsadm -ln     IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.253:80 rr persistent 50  -> 192.168.100.10:80            Route   1      0          0  -> 192.168.100.20:80            Route   1      0          0

模拟第二台Web节点和主调度器故障,并在备份调度器上再次查询VIP以及web节点

[root@centos05 ~]# ip a show dev ens32   ens32:  ate UP groupn 1000    link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff    inet 192.168.100.40/24 brd 192.168.100.255 scope global noprefixroute ens32       valid_lft forever preferred_lft forever    inet 192.168.100.253/32 scope global ens32           valid_lft forever preferred_lft forever    inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute       valid_lft forever preferred_lft forever[root@centos05 ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.253:80 rr  -> 192.168.100.10:80            Route   1      0          0

查看调度器故障切换时的日志消息

[root@centos05 ~]# tail -30 /var/log/messages

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

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

相关文章

1-5docker私有镜像仓库

1、简单操作 1、在 https://cloud.docker.com 免费注册一个 Docker 账号 2、登录 docker login #命令登录 Docker Hub。 3、注销docker logout # 退出登录。 拉取镜像 4、docker search #命令来查找官方仓库中的镜像 5、docker pull 命令来将它下载到本地。#推送镜像到自己…

NCoreCoder.Aop详解

于今天,功能终于完善度到比较满意的程度了 准备好好写一篇文章,而不是之前的流水账,分享一下最近这些天的踩坑 一开始AOP选的微软提供的DispatchProxy 关于这个,有大佬的文章,可以看看,了解一下 https://ww…

主类网络号怎么算_一文了解网络文化经营许可证的审批范围

3月10日,北京市文化和旅游局发布《关于电商类、教育类、医疗类、培训类、金融类、旅游类、美食类、体育类、聊天类不需要申请办理的特别提示》(以下简称《特别提示》)。《特别提示》指出,随着互联网技术的快速发展,利用互联网从事文化经营活动…

idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦

日常开发过程中,项目常常都会使用Redis来做缓存或者Session服务器,为了更直观方便,开发者常常会使用一些可视化工具,如 Redis Desktop Manager、Redis Clent等,但界面UI做得不尽人意,作为当今时代&#xff…

javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...

学习Excel技术,关注微信公众号:excelperfect数组函数是可以提供多个值的Excel内置函数。下面列出了8个Excel内置的数组函数:TRANSPOSE函数MODE.MULT函数(在Excel 2010中引入)TREND函数FREQUENCY函数LINEST函数MMULT函数MUNIT函数(在Excel 201…

linux python安装教程_Linux系统如何安装Python?新手教程

新手入门Python的第一步就是要在你的计算机上安装好Python。有些人可能要问了,Linux系统如何安装Python?本文为你准备了一份新手安装Python的教程,几乎是手把手教你如何操作,你只要尽量照着下面的教程说明,就能成功地在…

1-6docker数据共享与持久化

1、在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种⽅式: 数据卷(Data Volumes) 挂载主机⽬录 (Bind mounts)2、数据卷 数据卷 是⼀个可供⼀个或多个容器使⽤的特殊⽬录,它绕过 UFS ,可以提…

中yeti不能加载_第二十章_类的加载过程详解

类的加载过程详解概述在 Java 中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载按照 Java 虚拟机规范,从 Class 文件到加载到内存中的类,到类卸载出内存位置,它的整个生命…

泛型参数怎么new_泛型编程,你不知道?(基础篇)

关注“杜明c”,每天进步一点点!我们学习C,就常常有人提起泛型编程,什么是泛型编程?我就给大家简单聊一聊。摘要-什么是泛型编程为什么使用泛型编程使用方法什么是泛型编程泛型编程,简而言之,就是…

zabbix入门之添加监控项

zabbix入门之添加监控项 添加一个不带参数的监控项(system.cpu.switches) 进入“配置”-->“主机”选择某主机的“监控项” 选择创建监控项 键值后边的“选择”提供了大量的键值,带有[ ]的需要定义参数值,这里选择system.cpu.s…

scratch跳一跳游戏脚本_cocos creator制作微信小游戏「跳一跳」

一、游戏的分析(之前没有接触过小游戏,制作的思维还停留在大型ARPG游戏大家共同协作的想法里,但是小游戏讲究小而全,大部分时间是一个人独立开发,所以需要迫使自己养成看到小游戏先拆分细化的思想)二、一些必要的参数台阶参数1: 设…

中boxplot函数的参数设置_如何在Python中生成图形和图表

在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据。Python中常用的一些可视化数据包括以下几种。Matplotlib。Seaborn。ggplot。Geoplotlib。Bokeh。Plotly。在本章中将使用Matplotlib可视化数据包。此外&a…

zabbix入门之监控MySQL

zabbix入门之监控MySQL 这里使用的是zabbix官方自带的MySQL监控模板。 首先确保在被监控主机安装zabbix-agent、zabbix-sender,并且将主机加入监控节点。具体操作请看zabbix添加主机:https://www.cnblogs.com/Smbands/p/11593593.html 修改zabbix自带的M…

css清除浮动的几种方法_CSS 分享几种传统布局方法[上]

本章主要探讨 HTML5 中 CSS 早期所使用的传统布局,很多情况下,这些布局方式还是非常有用的。一.布局模型在早期没有平板和智能手机等移动设备大行其道的时期,Web 页面的设计主要是面向PC 端电脑分辨率展开的。这种分辨率比例比较单…

1-7docke的网络模式

1、Bridge模式bridge 模式是 docker 的默认⽹络模式,不写 –net 参数,就是 bridge 模式。比如使⽤ docker run - p 时工作模式从网上找了一个,如下 例子: run -it -d --name test1 --netbridge centos:v1 bashrun -it -d --name t…

分页的limit_分页场景(limit,offset)为什么会慢

链接:http://t.cn/AidABz08从一个问题说起五年前在腾讯的时候,发现分页场景下,mysql请求速度非常慢。数据量只有10w的情况下,select xx from 单机大概2,3秒。我就问我师父为什么,他反问“索引场景,mysql中获…

Android游戏开发基础part3--Paint 画笔

游戏开发基础part3--Paint 画笔 Paint画笔是绘图的辅助类,一般它是作为画布的参数来实现相应的效果,Paint类中包含文字与位图的样式、颜色等属性信息。Paint的常用方法如下: 1.setAntiAlias(boolean aa) 作用:设置画笔是否无锯齿 …

jvm 参数_6个提高性能的JVM参数

截止到2020年五月,JVM中仅仅只是关于垃圾回收和内存相关的参数就已经超过600个。如果算上其他方面的参数,JVM相关的总参数能轻松超过1000个。参数太多了,弄得人很懵逼。在这边文章中,我们只选取了7个比较重要,且有用的…

zabbix入门之定义触发器

zabbix入门之定义触发器 触发器的概念 触发器的定义:界定某特定的item 采集到数据的非合理区间或非合理状态。通常为逻辑表达式。 逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下: O K (符合条件&#xff…

mybatis字符串转成数字_Python字符串三种格式化输出

字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助。格式化输出:内容按照一定格式要求进行输出。1.使用占位符%输出python2.6版本之前,使用%格式化字符串沿用的是C语言的输出…