Linux Cluster
LB(负载均衡集群)
负载均衡集群,通常有两种实现方式,基于硬件或基于软件。
基于硬件:BIP
基于软件:
基于OSI第四层传输层:LVS(Linux Virtual Server)
基于OSI第期层传输层:nginx
LVS,全称Linux Virtual Server,由国人章文嵩博士提出并实现。
LVS有三种工作模式:DR直接路由模式、NAT地址转换模式、TUN隧道模式
Director具备两张网卡,一张连接外网,一张连接内网中的realserver。
realserver单网卡配置内网IP,运行http服务,挂上简单的测试web。
物理机上安装virtualbox软件上创建一台centos5.5,最小化安装即可,作为Director。
桌面可装可不装,使用6.X,7.X也是可以的,这里使用centos5.5是因为my computer才8G内存
virtualbox的虚拟介质管理,复制2台刚才安装好的centos5.5硬盘,明明为realserver1,realserver2
新建虚拟机作为realserver时,选择存储介质选择现有的磁盘,路径指向刚才复制的centos5.5
0).ipvs在2.6.X版本后的内核中默认安装有,我们需要安装ipvsadm进行管理,
**注意:ipvsadm与iptables不能同时使用,实验前需关闭iptables与selinux**
关闭iptables:
setup
或:
service iptables stop #停止iptables服务
chkconfig iptables off #iptables开机不自启
关闭selinux:
setup
或:
vim /etc/sysconfig/selinux #修改selinux的配置文件
SELINUX=disabled #将SELINUX等号右边的值修改为disabled
1).Director设置双网卡,外网网卡选择桥接模式,内网网卡选择host-only模式
2).为Director安装ipvsadm
yum -y install ipvsadm
检查是否安装成功只需输入ipvsadm,无输出则未安装有,若已安装则输出如下字样
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3).配置director的IP地址,启动realserver,网卡模式选择host-only并配置IP地址,realserver网关指向director的内网IP
4).配置测试网页
为每台realserver安装http,并启动httpd服务
yum install http
service httpd start
echo "this is realserver1 test web" > /var/www/html/index.html
echo "this is realserver2 test web" > /var/www/html/index.html
echo "this is realserver3 test web" > /var/www/html/index.html
#分别创建测试页
curl http://ipaddress #访问测试页
5).配置ipvsadm规则
在director上配置
ipvsadm -A -t 192.168.8.28:80 -s rr #添加集群服务 tcp服务类型 服务的ip与端口号 使用调度算法为 rr
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.102 -m #添加服务器,工作模式为NAT
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.103 -m
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.104 -m
ipvsadm -l -n #查看当前就群信息连接数等
输出结果如下
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.28:80 rr
-> 192.168.56.103:80 Masq 1 0 0
-> 192.168.56.102:80 Masq 1 0 0
6).测试
在director打开网卡转发
echo 1 > /proc/sys/net/ipv4/ip_forward #默认为0,不打开网卡转发
使用物理机的浏览器输入http://director的ip地址
不断刷新即可看到效果
在集群中服务器与director之间的时间误差不能超过一秒
解决办法:
办法一:运行ntp服务,与网络上的ntp服务器进行时间同步即可
service ntpd start
办法二:把director当作时间服务器使realserver与director进行时间同步
director运行service ntpd start
realserver运行ntpd directorIP,如ntpd 192.168.56.101
-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。
-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-t --tcp-service service-address 说明虚拟服务器提供的是tcp
-u --udp-service service-address 说明虚拟服务器提供的是udp
-s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.
#本节ipvsadm的用法来自http://linux.51yip.com/
director收到用户请求后,需要通过一定的调度算法来决定将请求分发给那台realserver处理。
分为动态调度与静态调度,静态调度为 rr wrr,不考虑服务器性能与当前连接数,将请求轮流分发;
动态调度为wlc|lblc|lblcr|dh|sh|sed|nq,若不指定调度算法默认为wlc,一句当前服务器的
性能当前连接数与权重,进行运算,将用户请求分给相对较为空闲的realserver。