共计 9387 个字符,预计需要花费 24 分钟才能阅读完成。
集群:是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
Linux 服务器 LB 群集之 LVS-NAT http://www.linuxidc.com/Linux/2013-05/84774.htm
Linux 下群集服务之 LB 集群 -LVS-NAT 模式 http://www.linuxidc.com/Linux/2012-05/59839.htm
LVS-NAT+ipvsadm 实现 RHEL 5.7 上的服务集群 http://www.linuxidc.com/Linux/2012-04/58936.htm
Linux 虚拟服务器 LVS-NAT 和 LVS-DR 模型的实现 http://www.linuxidc.com/Linux/2011-09/42934.htm
集群分为:
HA:High Availability 高可用集群
LB:Load Balancing 高可拓展,伸缩集群
HP:High Performance 高性能集群
LVS 的类型:nat,dr,tun
nat 类型的特性:
1、RS 应用使用私有地址;RS 的网关必须指向 DIP;
2、请求和响应都要经过 Director;高负载场景中,Director 易成为性能瓶颈;
3、支持端口映射;
4、RS 可以使用任意 OS;
dr 类型的特性:
1、保证前端路由将目标地址为 VIP 的报文统统发往 Directory,而不能是 RS;
解决方案:
(1) 静态地址绑定:在前端路由器上操作
问题:未必有路由操作权限
(2) aprtables
(3) 修改 RS 上内核参数,将 RS 上的 VIP 配置在 lo 接口的别名上,并限制其不能响应对 VIP 地址解析请求;
2、RS 可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过 RIP 对其直接访问;
3、RS 跟 Directory 必须在同一物理网络中;
4、请求报文经由 Director,但响应报文必须不能经过 Director;
5、不支持端口映射;
6、RS 可以是大多数常见的 OS;
7、RS 的网关绝不允许指向 DIP;
tun 类型的特性:
1、RIP、VIP、DIP 全部是公网地址;
2、RS 的网关不会也不可能指向 DIP;
3、请求报文经由 Director,但响应报文必须不能经过 Director;
4、不支持端口映射;
5、RS 的 OS 必须支持隧道功能;
下边我们讲一下 Load Balancing 的实现。LB 实现高拓展集群的方法有软件,硬件两种。由于条件限制而我们只作软件实验
LB 实验用到的软件为 LVS:Linux Virtual Server 虚拟服务器。
lvs 分为两部分,ipvsadm 和 ipvs,ipvs 是工作在内核上的。所以我们只需要安装 ipvsadm 即可。
实验环境准备:
host1:CentOS6.5
网卡两个:eth0 工作在 172.16.249.138/16,是 VIP 是公网 IP;eth1 工作在 10.0.0.1/24 是 DIP 私网 IP
host2:CentOS6.5
单网卡,私网 IP:10.0.0.2
ipvsadm 版本:ipvsadm-1.26-2.el6
实验模型:nat 类型
实验内容:
对 web 服务请求做负载均衡,将请求的分发到不同的 web 服务器上去,降低对单个服务器的压力。
1,配置环境
host1 主机配置:
为两块网卡配置 IP:
ifconfig eth0 172.16.249.138/16
ifconfig eth1 10.0.0.1/24 up
将 eth0 设为桥接。eth1 设为指定本地网络
yum install ipvsadm #安装 ipvsadm 软件
host2 主机配置:
ifconfig eth0 10.0.0.2/24
eth0 设为本地网络
route add default gw 10.0.0.1
所以 host1 的 eth1 与 host2 的 eth0 都无法直接访问公网网络。
2,为 host2 主机提供 web 服务。
yum install httpd #安装 httpd,有的就无需安装。
配置 httpd, 创建虚拟主机,模拟两台服务器模式工作。
#DocumentRoot “/var/www/html” #注销掉根目录
NameVirtualHost *:80 #启用
<VirtualHost 10.0.0.8:80>
ServerAdmin aolens@aolens.com
DocumentRoot /www/host1/
ServerName www.aolens.com
ErrorLog /www/host1_error.log
CustomLog /www/host1_access.log
</VirtualHost>
<VirtualHost 10.0.0.9:80>
ServerAdmin aolens@aolens.com
DocumentRoot /www/host2/
ServerName www.aolens.com
ErrorLog /www/host2_error.log
CustomLog /www/host2_access.log
</VirtualHost>
保存
httpd -t #是否有语法错误。
service httpd reload
mkdir -pv /www/{host1,host2} #创建文件的目录。为 web 服务提供两个不同的页面,方便可观察访问的是哪个服务器。
为两台虚拟主机提供访问页面:
vim /www/host1/index.html
<h1> www.node1.com</h1>
vim /www/host2/index.html
<h1> www.node2.com</h1>
3,添加一个集群服务
service ipvsadm start #启动 ipvsadm 服务
ipvsadm -A -t 172.16.249.138:80 -s rr #添加一个集群 VIP:Port=172.16.249.138:80 调度方式选择 rr 轮询,这样便于观察访问
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.8 -m #为集群添加 RS1
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.9 -m #为集群添加 RS2
[root@www ~]# cat /proc/sys/net/ipv4/ip_forward #查看转发功能是否开启,开启为 1,关闭是 0
0
[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm 的简单用法 :
添加一个集群服务:ipvsadm -A|E -t|u|f service-address [-s scheduler]
service-address:
-t|u: VIP:Port
向一个已经存在集群服务添加一个 RS:ipvsadm -a|e -t|u|f service-address -r server-address [options]
-r RS-ADDR
-w weight
–gatewaying -g gatewaying (direct routing) (default)
–ipip -i ipip encapsulation (tunneling)
–masquerading -m masquerading (NAT)
查看已经定义的集群服务及 RS:ipvsadm -L -n
清空所有的集群服务:ipvsadm -C
删除集群服务:ipvsadm -D -t|u|f service-address
从集群服务中删除 RS:ipvsadm -d -t|u|f service-address -r server-address
保存集群服务定义:
ipvsadm -S > /path/to/some_rule_file
ipvsadm-save > /path/to/some_rule_file
让规则文件中的规则生效:
ipvsadm -R < /path/from/some_rule_file
ipvsadm-restore < /path/from/some_rule_file
在物理主机上访问 172.16.249.138.
当访问到的数据时 www.node2.com 是,下个访问数据将会是 www.node1.com , 也可以刷新一个访问会不停变换显示结果,明显,每一次的访问到的服务器端都是不同。当两个服务器数据一样是。这就实现了负载均衡
但是如果同意用户访问同一数据,还不停的做轮询这样不但消耗资源而且缓存机制的作用被大大减小了。那么如何实现让同一用户访问同一数据去往同一服务器呢?实现此方法就要用到 Session 的持久机制。
Session 持久机制:
1、session 绑定:始终将来自同一个源 IP 的请求定向至同一个 RS;没有容错能力;有损均衡效果;
2、session 复制:在 RS 之间同步 session,每个 RS 拥有集群中的所有的 session;对规模集群不适用;
3、session 服务器:利用单独部署的服务器来统一管理集群中的 session;
调度算法中的 sh 算法就可以实现 Session 绑定。
[root@www ~] # ipvsadm -E -t 172.16.249.138:80 -s sh #修改集群调度算法为 sh
在物理主机上访问 172.16.249.138. 第一次访问到的是什么结果,那么往后一段时间内访问到的数据结果就是相同的。
后边的实现都将 172.16.249.138 改为 192.168.1.128. ipvsadm 的集群定义也一样。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-09/106174p2.htm
下边我们来为安装 Discuz 论坛
1,配置 nfs 服务器,将 Discuz 放到 nfs 上。
服务端端配置:
服务器 IP:192.168.1.128
在 NFS 服务器端安装 nfs-utils
编辑配置文件:/etc/exports
/nfsserver 10.0.0.0/24(rw,async,no_root_squash)
创建共享目录 /nfsserver
mkdir /nfsserver
给共享目录 apache 用户的 rwx 权限:
setfacl -m u:apache:rwx /nfsserver
重启服务:service nfs restart
客户端:
创建 /web/nfs 挂载目录:
showmount -a 172.16.18.5 查看共享的 NFS 服务。
mount -t nfs 10.0.0.2:/nfsserver /www/host1/upload
mount -t nfs 10.0.0.2:/nfsserver /www/host2/upload
2,提供数据库配置:
安装数据库不会的可以查看:http://www.linuxidc.com 寻找解答。
host1 主机作为 MySQL 的服务器端。
create database discuz #创建一个 discuz 数据库
GRANT ALL ON *.* TO ‘aolens’@’10.%.%.%’ IDENTIFIED BY ‘aolens’ 创建一个用户给他权限。
3,提供 Discuz 安装:
在 nfs 服务器端解压 Discuz 包。我们这里使用的 Discuz 版本为:Discuz_7.2_FULL_SC_GBK.zip
cp Discuz_7.2_FULL_SC_GBK.zip /nfsserver
cd /nfsserver
unzip Discuz_7.2_FULL_SC_GBK.zip
mv ./upload/* ./
访问 192.168.1.128/upload/index.php 执行 Discuz 的安装。
解决出现的错误:
chmod 777 ./config.inc.php
chmod 777 ./attachments
chmod 777 ./forumdata
chmod -R 777 ./forumdata/*
chmod 777 ./uc_client/data/cache
yum install php-mysql
service httpd restart
service mysqld restart
chown -R apache.apache /nfsserver/*
基于 Linux 做安装 Discuz 论坛做访问负载均衡,且将数据文件都放在 NFS 服务器上,实现数据同步实验结束!
集群:是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
Linux 服务器 LB 群集之 LVS-NAT http://www.linuxidc.com/Linux/2013-05/84774.htm
Linux 下群集服务之 LB 集群 -LVS-NAT 模式 http://www.linuxidc.com/Linux/2012-05/59839.htm
LVS-NAT+ipvsadm 实现 RHEL 5.7 上的服务集群 http://www.linuxidc.com/Linux/2012-04/58936.htm
Linux 虚拟服务器 LVS-NAT 和 LVS-DR 模型的实现 http://www.linuxidc.com/Linux/2011-09/42934.htm
集群分为:
HA:High Availability 高可用集群
LB:Load Balancing 高可拓展,伸缩集群
HP:High Performance 高性能集群
LVS 的类型:nat,dr,tun
nat 类型的特性:
1、RS 应用使用私有地址;RS 的网关必须指向 DIP;
2、请求和响应都要经过 Director;高负载场景中,Director 易成为性能瓶颈;
3、支持端口映射;
4、RS 可以使用任意 OS;
dr 类型的特性:
1、保证前端路由将目标地址为 VIP 的报文统统发往 Directory,而不能是 RS;
解决方案:
(1) 静态地址绑定:在前端路由器上操作
问题:未必有路由操作权限
(2) aprtables
(3) 修改 RS 上内核参数,将 RS 上的 VIP 配置在 lo 接口的别名上,并限制其不能响应对 VIP 地址解析请求;
2、RS 可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过 RIP 对其直接访问;
3、RS 跟 Directory 必须在同一物理网络中;
4、请求报文经由 Director,但响应报文必须不能经过 Director;
5、不支持端口映射;
6、RS 可以是大多数常见的 OS;
7、RS 的网关绝不允许指向 DIP;
tun 类型的特性:
1、RIP、VIP、DIP 全部是公网地址;
2、RS 的网关不会也不可能指向 DIP;
3、请求报文经由 Director,但响应报文必须不能经过 Director;
4、不支持端口映射;
5、RS 的 OS 必须支持隧道功能;
下边我们讲一下 Load Balancing 的实现。LB 实现高拓展集群的方法有软件,硬件两种。由于条件限制而我们只作软件实验
LB 实验用到的软件为 LVS:Linux Virtual Server 虚拟服务器。
lvs 分为两部分,ipvsadm 和 ipvs,ipvs 是工作在内核上的。所以我们只需要安装 ipvsadm 即可。
实验环境准备:
host1:CentOS6.5
网卡两个:eth0 工作在 172.16.249.138/16,是 VIP 是公网 IP;eth1 工作在 10.0.0.1/24 是 DIP 私网 IP
host2:CentOS6.5
单网卡,私网 IP:10.0.0.2
ipvsadm 版本:ipvsadm-1.26-2.el6
实验模型:nat 类型
实验内容:
对 web 服务请求做负载均衡,将请求的分发到不同的 web 服务器上去,降低对单个服务器的压力。
1,配置环境
host1 主机配置:
为两块网卡配置 IP:
ifconfig eth0 172.16.249.138/16
ifconfig eth1 10.0.0.1/24 up
将 eth0 设为桥接。eth1 设为指定本地网络
yum install ipvsadm #安装 ipvsadm 软件
host2 主机配置:
ifconfig eth0 10.0.0.2/24
eth0 设为本地网络
route add default gw 10.0.0.1
所以 host1 的 eth1 与 host2 的 eth0 都无法直接访问公网网络。
2,为 host2 主机提供 web 服务。
yum install httpd #安装 httpd,有的就无需安装。
配置 httpd, 创建虚拟主机,模拟两台服务器模式工作。
#DocumentRoot “/var/www/html” #注销掉根目录
NameVirtualHost *:80 #启用
<VirtualHost 10.0.0.8:80>
ServerAdmin aolens@aolens.com
DocumentRoot /www/host1/
ServerName www.aolens.com
ErrorLog /www/host1_error.log
CustomLog /www/host1_access.log
</VirtualHost>
<VirtualHost 10.0.0.9:80>
ServerAdmin aolens@aolens.com
DocumentRoot /www/host2/
ServerName www.aolens.com
ErrorLog /www/host2_error.log
CustomLog /www/host2_access.log
</VirtualHost>
保存
httpd -t #是否有语法错误。
service httpd reload
mkdir -pv /www/{host1,host2} #创建文件的目录。为 web 服务提供两个不同的页面,方便可观察访问的是哪个服务器。
为两台虚拟主机提供访问页面:
vim /www/host1/index.html
<h1> www.node1.com</h1>
vim /www/host2/index.html
<h1> www.node2.com</h1>
3,添加一个集群服务
service ipvsadm start #启动 ipvsadm 服务
ipvsadm -A -t 172.16.249.138:80 -s rr #添加一个集群 VIP:Port=172.16.249.138:80 调度方式选择 rr 轮询,这样便于观察访问
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.8 -m #为集群添加 RS1
ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.9 -m #为集群添加 RS2
[root@www ~]# cat /proc/sys/net/ipv4/ip_forward #查看转发功能是否开启,开启为 1,关闭是 0
0
[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm 的简单用法 :
添加一个集群服务:ipvsadm -A|E -t|u|f service-address [-s scheduler]
service-address:
-t|u: VIP:Port
向一个已经存在集群服务添加一个 RS:ipvsadm -a|e -t|u|f service-address -r server-address [options]
-r RS-ADDR
-w weight
–gatewaying -g gatewaying (direct routing) (default)
–ipip -i ipip encapsulation (tunneling)
–masquerading -m masquerading (NAT)
查看已经定义的集群服务及 RS:ipvsadm -L -n
清空所有的集群服务:ipvsadm -C
删除集群服务:ipvsadm -D -t|u|f service-address
从集群服务中删除 RS:ipvsadm -d -t|u|f service-address -r server-address
保存集群服务定义:
ipvsadm -S > /path/to/some_rule_file
ipvsadm-save > /path/to/some_rule_file
让规则文件中的规则生效:
ipvsadm -R < /path/from/some_rule_file
ipvsadm-restore < /path/from/some_rule_file
在物理主机上访问 172.16.249.138.
当访问到的数据时 www.node2.com 是,下个访问数据将会是 www.node1.com , 也可以刷新一个访问会不停变换显示结果,明显,每一次的访问到的服务器端都是不同。当两个服务器数据一样是。这就实现了负载均衡
但是如果同意用户访问同一数据,还不停的做轮询这样不但消耗资源而且缓存机制的作用被大大减小了。那么如何实现让同一用户访问同一数据去往同一服务器呢?实现此方法就要用到 Session 的持久机制。
Session 持久机制:
1、session 绑定:始终将来自同一个源 IP 的请求定向至同一个 RS;没有容错能力;有损均衡效果;
2、session 复制:在 RS 之间同步 session,每个 RS 拥有集群中的所有的 session;对规模集群不适用;
3、session 服务器:利用单独部署的服务器来统一管理集群中的 session;
调度算法中的 sh 算法就可以实现 Session 绑定。
[root@www ~] # ipvsadm -E -t 172.16.249.138:80 -s sh #修改集群调度算法为 sh
在物理主机上访问 172.16.249.138. 第一次访问到的是什么结果,那么往后一段时间内访问到的数据结果就是相同的。
后边的实现都将 172.16.249.138 改为 192.168.1.128. ipvsadm 的集群定义也一样。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-09/106174p2.htm