LVS集群---》在这里做前端调度器搭建使用,工作模式用的LVS-nat和LVS-dr。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
集群:一组通过高速网络互联的计算组,并以单一系统的模式加以管理,服务的是同一网站
集群目低:增加可靠性 提高性能 降低成本 提高可靠扩展性
集群分类:
高性能计算集群HPC(工作中用的少):通过以集群开发的并行应用程序,解决复杂的科学问题|(主要是单次科学计算速度要求快,如天气预报)
负责均衡(LB)集群:客户端负责在计算机集群中尽可能平均分摊(用户量大,需要快速解决,平均分摊)
高可用(HA)集群:避免单点故障,当一个系统发生故障时,可以快速迁移
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
搭建LAMP分离结构
1.准备三台虚拟机
vh01.tedu.cn 192.168.4.1/24 web1
vh02.tedu.cn 192.168.4.2/24 web2
vh03.tedu.cn 192.168.4.3/24 mysql1
2.配置mysql(vh03)
# yum -y install mysql-server
# service mysqld start; chkconfig mysqld on
# mysql -uroot
mysql> grant all on *.* to ‘admin‘@‘192.168.4.1‘ identified by ‘tedu.cn‘;
mysql> grant all on *.* to ‘admin‘@‘192.168.4.2‘ identified by ‘tedu.cn‘;
3.配置web服务器
在两台web服务器上安装软件包
# yum -y install httpd php php-mysql
# service httpd start; chkconfig httpd on
在vh01上安装Discuz
#unzip Discuz_X3.2_SC_UTF8.zip
#mv upload/ /var/www/html/bbs
#firefox http://192.168.4.1/bbs & (把打开的页面中,带红叉的目录,复制到一个文件夹中,给它权限,就可以安装了,也可以直接给bbs目录改成apache属主,或给777,权限都行,但怕权限太大不安全)
#cd /var/www/html/bbs/
#vim 1.txt
./config 可写 不可写
./data 可写 不可写
./data/cache 可写 不可写
./data/avatar 可写 不可写
./data/plugindata 可写 不可写
./data/download 可写 不可写
./data/addonmd5 可写 不可写
./data/template 可写 不可写
./data/threadcache 可写 不可写
./data/attachment 可写 不可写
./data/attachment/album 可写 不可写
./data/attachment/forum 可写 不可写
./data/attachment/group 可写 不可写
./data/log 可写 不可写
./uc_client/data/cache 可写 不可写
./uc_server/data/ 可写 不可写
./uc_server/data/cache 可写 不可写
./uc_server/data/avatar 可写 不可写
./uc_server/data/backup 可写 不可写
./uc_server/data/logs 可写 不可写
./uc_server/data/tmp 可写 不可写
./uc_server/data/view 可写 不可写
#chmod 777 $(awk ‘{print $1}‘ ./1.txt (把上面第一列弄出来给权限)
#//再在浏览器页面中,一步一步安装就可,然后创建一个用户。
将vh01的bbs目录打包到scp到vh02
#cd /var/www/html
#tar -zcf bbs.tar.gz bbs
#scp bbs.tar.gz root@192.168.4.2:/root/var/www/html
vh02:# cd /var/www/html/
#tar -zxvf bbs.tar.gz
# firefox http://192.168.4.2/bbs
在打开的浏览器中就会看到刚注册的用户。因为数据都是保存在数据库中,所以能同步。
——————————————————————————————————————
LVS集群组成
-前端:负责均衡层 由一台或多台负责高度器构成
-中间:服务器群组层 由一组实际运行应用服务的服务器组成
-底端:数据共享存储层 提供共享存储空间的存储区域
LVS术语: DS调度服务器(将负载分发到RS服务器上) RS真实服务器(真正提供应用服务的服务器) VIP虚拟IP地址(公布给用户访问的虚拟IP地址) RIP真实IP地址(集群节点上使用的IP地址) DIP调度器连接节点服务器的IP地址
lvs工作模式三种 :NAT模式 TUN模式(隧道模式) DR(模式)
vs/NAT通过网络地址转换实现的虚拟服务器(大并发访问时,调度器的性能成为瓶颈)
vs/DR直接使用路由器技术实现虚拟服务器(节点服务器需要配置VIP)
vs/TUN通过隧道方式实现虚拟服务器
负载均衡调度算法10种
常用四种
轮循(平均)
加权轮循(根据权重值进行轮循,一般性能好的可以让它多轮几次,差的少轮)
最少连接 (选浙最少连接服务器)
加权最少连接(也是根据性能)
目标地址散列
最少队列调度
——————————————————————————————————————
准备一台虚拟机作为调度器
vh04.tedu.cn 192.168.4.4/24 201.1.1.4/24 (eth0和eth2)
一,配置yum
# vim /etc/yum.repos.d/abc.repo
[abc]
name=abc
baseurl=ftp://192.168.4.11/pub/iso/ (这里默认用的是yum仓库中的Server库)
gpgcheck=0
[LoadBalncer]
name=abc
baseurl=ftp://192.168.4.11/pub/iso/LoadBalancer (LVS装的包ipvsadm在yum仓库的LoadBalancer库)
gpgcheck=0
# yum repolist
仓库标识 仓库名称 状态
LoadBalncer abc 4
abc abc 3,819
repolist: 3,823
二。安装ipvsadm
# yum install -y ipvsadm
++++++++++++++++++++
配置lvs-nat模式
++++++++++++++++++++
1..打开调度器的路由功能(vh04)
# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1
# sysctl -p
2.配置两台web服务器网关,指向调度器的内网地址(192.168.4.4)。
vh01和vh02 网关设置192.168.4.4
3.在调度器上创建虚拟服务器,指定调度算法是rr(轮循)
#ipvsadm -A -t 201.1.1.4:80 -s rr (-A 添加虚拟服务器 -t设置群集地址VIP -s指定负载调度算法)
4.将realserver加入到虚拟服务器
# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.1 -m (-a添加真实服务器 -d删除真器 -r指定真实服务器 -m使用NAT模式 -g是DR模式 -i是TUN模式 -w设置权重 默认不输为1)
# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 2
5.查看规则
# ipvsadm -Ln
6.两个web服务器做一个测试页面,看轮循
vh01做一个测试页面
# cat /var/www/html/index.html
<h1><font color=red> web is 1
vh02做一个测试页面
# cat /var/www/html/index.html
<h1><marquee><font color=red> web is 2
6.在客户端,真机测试:
[root@room1pc01 桌面]# firefox http://201.1.1.4 (第一次是vh01页面,第二是vh02,三是vh01,四是vh02)
7.修改调度算法
#ipvsadm -E -t 201.1.1.4:80 -s wrr(调度算法改为权重轮循)
8.再在客户机测试:
[root@room1pc01 桌面]# firefox http://201.1.1.4 (出两次vh02,才出一次vh01)
9.保存lvs规则
service ipvsadm save
10调度器做个扩展(工作 要用地着叫脚本)
可以在调度器写一个脚本,监视web集群,当有一个出现故障时直接从调度器上移除,修复好了,自动加上了。
脚本:
vim monitor_web.sh
#!/bin/bash
#调度器上运行监控web1和web2脚本,当一台web坏了直接移除出ipvsadm,修复好后自动加入
进来。每三秒一次死循环。
VIP=201.1.1.4:80
RIP1=192.168.4.1
RIP2=192.168.4.2
while :
do
for ip in $RIP1 $RIP2
do
web_stat=$(nmap -n -sT $ip -p 80 2> /dev/null | grep open)
in_lvs=$(ipvsadm -Ln | grep $ip)
if [ -z "$web_stat" -a -n "$in_lvs" ]; then
ipvsadm -d -t $VIP -r $ip
elif [ -n "$web_stat" -a -z "$in_lvs" ]; then
ipvsadm -a -t $VIP -r $ip -m
fi
done
sleep 3
done
:wq
# chmod +x monitor_web.sh
#yum install -y nmap
#./monitor_web.sh &
# ipvsadm -Ln (可以看到web1和web2,当web1坏了就移除了,修复了就加进来,可以测试在vh01:service httpd stop)
______________________________________________________________________________________________________________________________
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[root@room1pc01 桌面]# touch /nsd/myfile.txt
[root@room1pc01 nsd]# ls
myfile.txt
[root@room1pc01 nsd]# cp myfile{.txt,.doc} 复制
[root@room1pc01 nsd]# ls
myfile.doc myfile.txt
++++++++++++++++++++++++++++
配置LVS-DR模式
1.清理调度器的规则 (接着上面的做,所以先清空之前的模式)
#ipvsadm -D -t 201.1.1.4:80
2.删除eth2的ip和子网
vim /etc/sysconfig/network-scripts/ifcfg-eth2(把ip和子网删了)
3.在vh04的eth0上配置vip 192.168.4.100
cp /etc/sysconfig/network-scripts/ifcfg-eth0{,:0}
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
IPADDR=192.168.4.100
NETMASK=255.255.255.0
service network restart
4.在两台web服务器的lo上配置vip
#cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.100
NETMASK=255.255.255.255
NETWORK=192.168.4.100
BROADCAST=192.168.4.100
ONBOOT=yes
NAME=loopback
# service network restart
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet 192.168.4.100/32 brd 192.168.4.100 scope global lo:0
....................
# scp /etc/sysconfig/network-scripts/ifcfg-lo:0 root@192.168.4.2:/etc/sysconfig/network-scripts/ifcfg-lo:0
root@192.168.4.2‘s password:
ifcfg-lo:0 100% 128 0.1KB/s 00:00
在vh02上:
# service network restart
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet 192.168.4.100/32 brd 192.168.4.100 scope global lo:0
inet6 ::1/128 scope host
。。。。。。。。
5.在两台服务器上配置内核参数(为的就是当客户端给192.168.4.100发送请求时,只有调度器响应,web服务器不相应)
(vh01和vh02都做)
# sysctl -a |grep arp_ig
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth1.arp_ignore = 0
net.ipv4.conf.eth2.arp_ignore = 0
net.ipv4.conf.eth3.arp_ignore = 0
# echo "net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf
# echo "net.ipv4.conf.lo.arp_ignore = 1" >>/etc/sysctl.conf
# sysctl -a |grep arp_an
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth1.arp_announce = 0
net.ipv4.conf.eth2.arp_announce = 0
net.ipv4.conf.eth3.arp_announce = 0
# echo "net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf
# echo "net.ipv4.conf.lo.arp_announce = 2" >>/etc/sysctl.conf
# sysctl -p
6.配置lvs规则
# ipvsadm -A -t 192.168.4.100:80 -s lc
# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.1
# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.2 -g
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.100:80 lc
-> 192.168.4.1:80 Route 1 0 0
-> 192.168.4.2:80 Route 1 0 0
7.客户端(真机测试192.168.4.254):
# firefox http://192.168.4.100/ (一定要加上/)
8.查看
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.100:80 lc
-> 192.168.4.1:80 Route 1 0 1
-> 192.168.4.2:80 Route 1 0 1
9.客户端批量发送请求(真机192.168.4.254)
[root@room1pc01 桌面]# which bc
/usr/bin/bc
[root@room1pc01 桌面]# rpm -qf /usr/bin/bc
bc-1.06.95-1.el6.x86_64
[root@room1pc01 桌面]# ab -n 1000 -c 10 http://192.168.4.100/ (每次发送10个请求,一共发送1000个请求)
10.查看
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.100:80 lc
-> 192.168.4.1:80 Route 1 0 486
-> 192.168.4.2:80 Route 1 0 515
本文出自 “12336621” 博客,请务必保留此出处http://12346621.blog.51cto.com/12336621/1906967
原文地址:http://12346621.blog.51cto.com/12336621/1906967