经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
NAT模式LVS负载均衡集群
来源:cnblogs  作者:旧巷g  时间:2023/9/10 16:32:28  对本文有异议

NAT模式LVS负载均衡集群

image-20230910120724856

负载调度器:内网 网关 ens33:192.168.1.200,外网 网关 ens36:12.0.0.10 Web节点服务器1:192.168.1.100 Web节点服务器2:192.168.1.101 NFS服务器:192.168.1.102 客户端:12.0.0.12

1.部署共享存储

(NFS服务器:192.168.1.102)

关闭防火墙

要用的机器都要关闭这些选项

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service
  3. setenforce 0
  4. vim /etc/selinux/config #永久关闭selinux

查看是否已有软件包

如果没有安装

  1. [root@localhost ~]# rpm -q rpcbind nfs-utils
  2. rpcbind-0.2.0-42.el7.x86_64
  3. nfs-utils-1.3.0-0.48.el7.x86_64

安装nfs,rpcbind服务

  1. yum install nfs-utils rpcbind -y
  2. systemctl start rpcbind.service
  3. systemctl start nfs.service
  4. systemctl enable nfs.service
  5. systemctl enable rpcbind.service

创建共享文件

  1. mkdir /opt/gy /opt/ylc
  2. chmod 777 gy/ ylc/
  3. echo 'this is gy web!' > gy/index.html
  4. echo 'this is ylc web!' > ylc/index.html
  5. ?

image-20230909144038593

  1. vim /etc/exports //配置共享策略
  2. cat /etc/exports
  3. /opt/gy 192.168.1.0/24(rw,sync)
  4. #rw可读可写ro只读,sync同步(同时同步到内存和磁盘)async,先同步到内存在同步到磁盘
  5.  #区别sync比async更安全如果突然宕机是有保存的,io消耗大
  6.  #async比sync读取速度更快
  7.  #root_squash不进行降权,降权的话为匿名用户
  8. /opt/ylc 192.168.1.0/24(rw,sync)
  9. --发布共享---
  10. exportfs -rv

image-20230909144001293

image-20230909144537530

2.配置节点服务器

(192.168.80.100、192.168.80.101)

配置第一台真实服务器

192.168.1.100

  1. [root@localhost ~]# systemctl stop firewalld.service
  2. [root@localhost ~]# setenforce 0
  3. [root@localhost ~]# systemctl disable firewalld.service

image-20230909144927330

 

  1. yum install httpd -y #安装web服务
  2. systemctl start httpd.serviceh
  3. systemctl enable httpd.service
  4. ?

image-20230909145231499

 

  1. yum install nfs-utils rpcbind -y
  2. showmount -e 192.168.1.102#查看nfs服务

image-20230909145413203

 

  1. systemctl start rpcbind
  2. systemctl enable rpcbind

image-20230909145543118

 

  1. mount.nfs 192.168.1.102:/opt/gy /var/www/html #临时挂载
  2. ?
  3. vim /etc/fstab #永久挂载
  4. 192.168.1.100/:/opt/gy /var/www/html nfs defaults,_netdev 0  0
  5. mount -a #读取永久挂载配置文件,实现挂载

image-20230909150312020

修改网网关指向

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33
  2. systemctl restart network

image-20230910140646781

修改http配置文件

  1. KeepAlive off#关闭长连接便于后面观察负载均衡,的跳转

image-20230910152103697

测试是否成功

  1. [root@localhost ~]# ls /var/www/html/
  2. index.html
  3. [root@localhost ~]# cat /var/www/html/index.html
  4. this is gy web!
  5. ?

image-20230910132555752

 

配置第二台真实服务器

--192.168.80.101---

  1. [root@localhost ~]# setenforce 0
  2. [root@localhost ~]# systemctl stop firewalld.service
  3. [root@localhost ~]# vim /etc/selinux/config //永久关闭selinux

image-20230909150932928

image-20230910132903185

  1. [root@localhost ~]# showmount -e 192.168.1.102 //查看nfs服务
  2. Export list for 192.168.1.102:
  3. /opt/ylc 192.168.1.0/24
  4. /opt/gy  192.168.1.0/24
  5. ?

image-20230910133431655

安装web服务httpd或nginx

  1. //这里我安装httpd
  2. yum install httpd -y //安装httpd服务
  3. systemctl enable --now httpd.service #开机自启并现在开启

 

  1. mount.nfs 192.168.1.102:/opt/ylc /var/www/html
  2. ?
  3. vim /etc/fstab #永久挂载
  4. 192.168.1.102:/opt/ylc /var/www/html nfs defaults,_netdev 0  0

image-20230909152250444

修改网网关指向

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33#修改网关指向
  2. systemctl restart network //刷新网卡配置

image-20230910140251045

修改http配置文件

  1. KeepAlive off

image-20230910152438563

测试

  1. cat /var/www/html/index.html

image-20230910152602388

3.配置负载调度器

(内网关 ens33:192.168.1.200,外网关 ens36:12.0.0.10)

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service
  3. setenforce 0

添加网卡

  1. ifconfig #查看新添加网卡

image-20230910134321519

修改新网卡配置

  1. cd /etc/sysconfig/network-scripts/
  2. cp ifcfg-ens33 ifcfg-ens36
  3. vim ifcfg-ens36 #修改ens36配置
  4. vim ifcfg-ens33 #修改ens33配置
  5. systemctl restart network #刷新网卡配置

image-20230910134730339

image-20230910135311755

测试

  1. ping 12.0.0.10

image-20230910140922629

(1)配置SNAT转发规则

  1. vim /etc/sysctl.conf#添加路由
  2. net.ipv4.ip_forward = 1
  3. ?
  4. echo '1' > /proc/sys/net/ipv4/ip_forward
  5. sysctl -p //加载配置文件
  6. ?
  7. ?

image-20230910135945386

image-20230909153059118

  1. iptables -t nat -F #清空nat表
  2. iptables -F #清空filter表
  3. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens36 -j SNAT --to 12.0.0.10
  4. #-t指定nat -A表指定POSTROUTING链 -s指定源地址 -o指定出口网卡 -j动作选项,它用于对数据包执行源地址转换,--to指定转换地址

image-20230909155442911

  1. iptables -t nat -nL查看是否配置成功

image-20230910142404637

测试

开启一台新的机器当客户端

我这里用的是windows7,linux也行

修改网络适配器

image-20230910151003344

浏览器访问

都能正常访问但是不能跳转

image-20230910151154028

 

image-20230910151538012

实现负载均衡,跳转

(2)加载LVS内核模块

  1. modprobe ip_vs #加载 ip_vs模块
  2. cat /proc/net/ip_vs #查看 ip_vs版本信息
  3. ?
  4. //也可以
  5. for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
  6. #用for循环加载所有ipvs模块

image-20230909155914807

(3)安装ipvsadm 管理工具

  1. yum -y install ipvsadm
  2. ?
  3. --启动服务前须保存负载分配策略---
  4. ipvsadm-save > /etc/sysconfig/ipvsadm
  5. 或者 ipvsadm --save > /etc/sysconfig/ipvsadm
  6. ?
  7. systemctl start ipvsadm.service

image-20230909160202280

注意:如果安装不了搭建本地yum仓库安装

(4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

  1. ipvsadm -C #清除原有策略
  2. ipvsadm -A -t 12.0.0.10:80 -s rr
  3. ipvsadm -a -t 12.0.0.1:80 -r 192.168.1.100:80 -m [-w 1]
  4. ipvsadm -a -t 12.0.0.1:80 -r 192.168.1.101:80 -m [-w 1]
  5. ipvsadm #启用策略
  6. ?
  7. ipvsadm -ln #查看节点状态,Masq代表 NAT模式
  8. ipvsadm-save > /opt/ipvsadm #保存策略
  9. ipvsadm-save > /etc/sysconfig/ipvsadm
  10. ?

image-20230910153912149

测试

  1. http://12.0.0.10

image-20230910160551546

image-20230910160822206

总结

  1. ipvsadm 工具选项说明:
  2. -A:添加虚拟服务器
  3. -D:删除整个虚拟服务器
  4. -s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc lblc:基于本地的最少连接)
  5. -a:表示添加真实服务器(节点服务器)
  6. -d:删除某一个节点
  7. -t:指定 VIP地址及 TCP端口
  8. -r:指定 RIP地址及 TCP端口
  9. -m:表示使用 NAT群集模式
  10. -g:表示使用 DR模式
  11. -i:表示使用 TUN模式
  12. -w:设置权重(权重为 0 时表示暂停节点)
  13. -p 60:表示保持长连接60秒(默认关闭连接保持)
  14. -l:列表查看 LVS 虚拟服务器(默认为查看所有)
  15. -n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln
  16. ?
  17. ?
  18. ---------------------NAT模式 LVS负载均衡群集部署-------------------------
  19. 负载调度器:内网关 ens33192.168.1.200,外网关 ens3612.0.0.10
  20. Web节点服务器1192.168.1.100
  21. Web节点服务器2192.168.1.101
  22. NFS服务器:192.168.1.102
  23. 客户端:12.0.0.12
  24. ?
  25. 1.部署共享存储(NFS服务器:192.168.1.102
  26. systemctl stop firewalld.service
  27. systemctl disable firewalld.service
  28. setenforce 0
  29. ?
  30. yum install nfs-utils rpcbind -y
  31. systemctl start rpcbind.service
  32. systemctl start nfs.service
  33. ?
  34. systemctl enable nfs.service
  35. systemctl enable rpcbind.service
  36. ?
  37. mkdir /opt/gy /opt/ylc
  38. chmod 777 /opt/gy /opt/ylc
  39. echo 'this is gy web!' > /opt/gy/index.html
  40. echo 'this is ylc web!' > /opt/ylc/index.html
  41. ?
  42. vim /etc/exports
  43. /opt/gy 192.168.1.0/24(rw,sync)
  44. /opt/ylc 192.168.1.0/24(rw,sync)
  45. ?
  46. --发布共享---
  47. exportfs -rv
  48. ?
  49. ?
  50. 2.配置节点服务器(192.168.1.100192.168.1.101
  51. systemctl stop firewalld.service
  52. systemctl disable firewalld.service
  53. setenforce 0
  54. ?
  55. yum install httpd -y
  56. systemctl start httpd.service
  57. systemctl enable httpd.service
  58. ?
  59. yum install nfs-utils rpcbind -y
  60. showmount -e 192.168.1.102
  61. ?
  62. systemctl start rpcbind
  63. systemctl enable rpcbind
  64. ?
  65. --192.168.80.100---
  66. mount.nfs 192.168.1.102:/opt/gy /var/www/html
  67. ?
  68. vim /etc/fstab
  69. 192.168.80.13:/opt/ylc /var/www/html nfs defaults,_netdev 0  0
  70. ?
  71. --192.168.80.101---
  72. mount.nfs 192.168.1.102:/opt/ylc /var/www/html
  73. echo 'this is ylc web!' > /var/www/html/index.html
  74. ?
  75. vim /etc/fstab
  76. 192.168.80.13:/opt/ylc /var/www/html nfs defaults,_netdev 0  0
  77. ?
  78. ?
  79. 3.配置负载调度器(内网关 ens33192.168.1.200,外网关 ens3612.0.0.10
  80. systemctl stop firewalld.service
  81. systemctl disable firewalld.service
  82. setenforce 0
  83. ?
  84. ?
  85. 准备 :添加双网卡并配置好地址
  86. ?
  87. 1)配置SNAT转发规则
  88. vim /etc/sysctl.conf
  89. net.ipv4.ip_forward = 1
  90. ?
  91. echo '1' > /proc/sys/net/ipv4/ip_forward
  92. sysctl -p
  93. ?
  94. iptables -t nat -F
  95. iptables -F
  96. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens36 -j SNAT --to 12.0.0.10
  97. ?
  98. 2)加载LVS内核模块
  99. modprobe ip_vs #加载 ip_vs模块
  100. cat /proc/net/ip_vs #查看 ip_vs版本信息
  101. ?
  102. for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
  103. ?
  104. 3)安装ipvsadm 管理工具
  105. yum -y install ipvsadm
  106. ?
  107. --启动服务前须保存负载分配策略---
  108. ipvsadm-save > /etc/sysconfig/ipvsadm
  109. 或者 ipvsadm --save > /etc/sysconfig/ipvsadm
  110. ?
  111. systemctl start ipvsadm.service
  112. ?
  113. 4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
  114. ipvsadm -C #清除原有策略
  115. ipvsadm -A -t 12.0.0.10:80 -s rr [-p 60]
  116. ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.100:80 -m [-w 1]
  117. ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.101:80 -m [-w 1]
  118. ipvsadm #启用策略
  119. ?
  120. ipvsadm -ln #查看节点状态,Masq代表 NAT模式
  121. ipvsadm-save > /opt/ipvsadm #保存策略
  122. ipvsadm-save > /etc/sysconfig/ipvsadm
  123. ----------------------------------------------------------------------------------------------------------
  124. ipvsadm -d -t 12.0.0.10:80 -r 192.168.1.100:80 #删除群集中某一节点服务器
  125. ipvsadm -D -t 12.0.0.1:80 #删除整个虚拟服务器
  126. systemctl stop ipvsadm #停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
  127. systemctl start ipvsadm #启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
  128. ipvsadm-restore < /opt/ipvsadm            #恢复LVS 策略
  129. ----------------------------------------------------------------------------------------------------------
  130. ?
  131. 4.测试效果
  132. 在一台IP12.0.0.12的客户机使用浏览器访问 http://12.0.0.10/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。

原文链接:https://www.cnblogs.com/sl08/p/17691432.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号