本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用)

本文主要是介绍本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Nginx是服务器集群的网关, 在生产中有流量分发的作用; 另外它属于应用层的负载均衡(第七层), 可以对请求和响应作额外的代理操作, 比如: gzip, 添加响应头以支持跨域, 防盗链配置

为保证Nginx的高可用, 需要搭建Nginx集群, LVS的负载均衡是基于链路层(第四层), 只分发请求而不进行代理, 所以LVS的吞吐量是高于Nginx的, 适合为Nginx集群作负载均衡

服务器与ip规划

  • LVS一台: VIP(虚拟ip, 生产中应是公网ip): 192.168.209.150;
    DIP(内网ip): 192.168.209.151
  • Nginx2台, RIP(真实ip, 因被LVS负载均衡, 所以生产中处于内网): 192.168.209.222和 192.168.209.223

上述3个计算机节点关闭网络配置管理器,因为有可能会和网络接口冲突

systemctl stop NetworkManager 
systemctl disable NetworkManager

LVS节点配置虚拟ip和负载均衡规则

配置虚拟ip

在LVS节点 (本案例为151节点)进入网卡配置目录 /etc/sysconfig/network-scripts
拷贝网卡, 创建子接口 cp ifcfg-ens33 ifcfg-ens33:1
修改子接口配置:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cbebd981-2b3f-4271-812c-9b7d202ba714
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.209.150
GATEWAY=192.168.209.2
NETMASK=255.255.255.0
DNS1=114.114.114.114

注意改 DEVICEIPADDR即可

重启网络服务 service network restart, 再执行 ip addr, 查看虚拟ip是否添加成功
在这里插入图片描述在云端, 阿里云不支持虚拟IP,需要购买他的负载均衡服务
腾讯云支持虚拟IP,但是需要额外购买,一台节点最大支持10个虚拟ip

用ipvsadm配置负载均衡规则

安装ipvsadm: yum install ipvsadm

创建LVS节点,用户访问的集群调度者

ipvsadm -A -t 192.168.209.150:80 -s rr -p 5

各参数含义如下:
-A:添加集群
-t:tcp协议
ip地址:设定集群的访问ip,也就是LVS的虚拟ip
-s:设置负载均衡的算法,rr表示轮询
-p:设置连接持久化的时间

创建2台RS真实服务器

ipvsadm -a -t 192.168.209.150:80 -r 192.168.209.222:80 -g
ipvsadm -a -t 192.168.209.150:80 -r 192.168.209.223:80 -g

-a:添加真实服务器
-t:tcp协议
-r:真实服务器的ip地址
-g:设定DR模式

保存到规则库,否则重启失效

ipvsadm -S

查看集群列表:

ipvsadm -Ln

LVS持久化配置, 选做, 参考链接 LVS持久化配置

为两台Nginx配置虚拟ip和arp(响应级别和通告行为)

配置虚拟ip

在Nginx所在的真实服务器节点(以222为例), /etc/sysconfig/network-scripts
复制 lo网卡 cp ifcfg-lo ifcfg-lo:1, vim ifcfg-lo:1
修改为如下:

DEVICE=lo:1
IPADDR=192.168.209.150
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

arp配置

vim /etc/sysctl.conf

配置所有网卡、默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:all,default,lo:

# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

刷新配置文件 sysctl -p

增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理:

route add -host 192.168.209.150 dev lo:1

防止重启失效,做如下处理,用于开机自启动:

echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local

此时, 开启两台RS上的Nginx服务, 即可通过访问 LVS中配置的虚拟ip(150节点), 访问Nginx了

Keepalived +LVS 高可用

LVS单个节点宕机, 则所有Nginx都不可访问, 考虑Keepalived +LVS实现高可用

下面, 以151节点为例, 使用keepalived配置LVS主节点

安装Keepalived过程省略, 需要提示一点: 执行make编译前, 需要指定核心配置文件所在位置: --prefix=/usr/local/keepalived --sysconf=/etc

keepalived注册为系统服务:

keepalived 注册为系统服务:
- 切换到路径 /home/software/keepalived-2.0.18/keepalived/etc
- 将自启动脚本复制到系统文件夹 cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/
- systemctl daemon-reload, 重加载系统服务
- 将keepalived作为系统服务启动, systemctl start keepalived.service

在 /etc/keepalived/ 下, 修改keepalived主配置文件如下

! Configuration File for keepalivedglobal_defs {# 主机标识符,全局唯一router_id keep_151
}# 计算机节点实例
vrrp_instance VI_1 {# MASTER, nginx 主节点state MASTER# 网卡名interface ens33virtual_router_id 151priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.209.150}
}# 配置集群地址访问的IP+端口, 端口和Nginx保持一致, 都是80
virtual_server 192.168.209.150 80 {# 健康检查时间  delay_loop 6# 负载均衡算法, 默认轮询lb_algo rr# 设置LVS的模式 NAT|TUN|DRlb_kind DR# 设置会话持久化时间persistence_timeout 5protocol TCP# 负载均衡的RSreal_server 192.168.209.222 80 {weight 1# 设置健康检查TCP_CHECK {connect_port 80# 检查的超时时间connect_timeout 2# 重试次数nb_get_retry 3# 间隔时间delay_before_retry 3   }}  real_server 192.168.209.223 80 {weight 1# 设置健康检查TCP_CHECK {connect_port 80# 检查的超时时间connect_timeout 2# 重试次数nb_get_retry 3# 间隔时间delay_before_retry 3}}
}

由于负载均衡规则已经由 keepalived定义了, 那我们可以清除 LVS此前定义的负载均衡规则 ipvsadm -C

启动或重启 keepalived服务 systemctl start keepalivedsystemctl restart keepalived

执行 ipvsadm -Ln , 查看 LVS负载均衡规则是否设置成功
在这里插入图片描述
151节点的配置完成了,152节点类似配置。访问192.168.209.150即可访问nginx

最后,150节点在生产环境应当是公网ip, 其他节点都是内网ip

这篇关于本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174880

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo