LVS
搭建
- 准备 两台 web ,和 一台 数据库
mysql1 192.168.4.1 ===tpl04 172.16.93.143
web1 192.168.4.2 ===tpl02 172.16.93.140
web2 192.168.4.3 === tpl03 172.16.93.141
lvs 192.168.4.4 ==== tpl01 192.168.29.168
201.。。。 ====tpl01 172.16.93.144
在mysql1 上::
mysql > grant all on *.* to ‘admin’@‘192.168.4.2’ identified by ‘123qwe’; //web01
mysql > grant all on *.* to ‘admin’@‘192.168.4.3’ identified by ‘123qwe’; //web02
在第一台web 上安装 discuz
yum 安装php
apache 配置php
vim /etc/httpd/conf/httpd.conf
找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在后面添加:
AddType application/x-httpd-php .php(使Apcche支持PHP)
AddType application/x-httpd-php-source .php5
找到: <IfModule dir_module> DirectoryIndex index.html </IfModule>
添加: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
找到: #ServerName www.example.com:80
修改为: ServerName 127.0.0.1:80或者ServerName localhost:80 记得要去掉前面的“#”
yum -y install php
yum -y install php-mysql
service httpd restart
setenforce 0
在web页面中国呢有很多的文件需要修改权限,可以使用以下做法: 首先把web页面中的文件内容复制粘贴到 aaaa文件中,然后,
awk ‘{print $1}’ aaaa | xargs -I {} chmod 777 {}
在第二台web 上
打包第一台 bbs目录下所有文件; 传到第二台,解压,就ok了
负载均衡集群LB
硬件: F5
软件: lvs haproxy
LVS 项目
章文嵩创建
lvs 可以实现高可用, 可伸缩的Web, Mail, Cache 和Media 等网络服务
LVS 集群组成
前端: 负载均衡层
由一台或多台负载调度器构成
中间: 服务器群组层
由一组实际运行应用服务的服务器组成
底端: 数据共享存储层
提供共享存储空间的存储区域
LVS 术语
Director Server: 调度服务器
—将负载分发到Real Server 的服务器
Real Server: 真实服务器
—真正提供应用服务的服务器
VIP: 虚拟IP地址
—公布给用户访问的虚拟IP地址
RIP :真实IP地址
— 集群节点上使用的IP地址
DIP : 调度器连接节点服务器的IP地址
模式:
NAT :
调度器服务器 : 有两个网卡(公网IP,内网IP)
能节省IP地址,(大多使用内网IP);
大并发时,调度器的性能成为瓶颈
DR:
调度器 服务器 只有一个网卡
tun模式:
通过隧道方式实现
使用很少
lvs 目前实现了10种调度算法
常用调度算法4种
—-轮询 (Round Robin)
—-加权轮询(Weighted Round Robin)
—最少连接 (Least Connections)
—加权最少连接(Weighted Least Connections)
- 准备lvs 服务器
2. 修改web服务器 的网关为 4.4; 调度器是网关
setup
3. 打开调度器的路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
4. 安装lvs
vim /etc/yum.repos.d/192.168.4.254_rhel6_7_Server.repo
[LoadBalancer]
name=LoadBalancer
baseurl = ftp ://192.168.4.254/rhel6_7/LoadBalancer
enabled=1
gpgcheck=0
yum -y install ipvsadm
ipvsadm -Ln //查看lvs调度
ipvsadm -A -t 192.168.29.168:80 -s wrr //vip
ipvsadm -a -t 192.168.29.168:80 -r 172.16.93.140 -m -w 2 //-m nat模式
ipvsadm -a -t 192.168.29.168:80 -r 172.16.93.141 -m -w 2 //-m nat模式
真机访问 192.168.29.168 观察
测试: 如果 把 web02 stop httpd 呢? 访问 192.168.29.168
结果:它还是一会web01, 一会 web02, 显然访问web02 浏览器 会说 “不能连接到服务器”。正式环境这样肯定不行的!用户无法正常使用网站。
说明: lvs 没有做服务终止错误检查
问题解决: 结合keeplived
nmap -n -st 192.168.4.2 -p 80 2> /dev/null | grep open
ipvsadm -Ln | egrep ‘192\.168\.4\.3’
脚本
#!/bin/bash
VIP=192.168.29.170:80
RIP1=172.16.93.140
RIP2=172.16.93.141
while [ 1 ]
do
for IP in $RIP1 $RIP2
do
#IP=$RIP2
web_stat=$(nmap -n -sT $IP -p 80 2>/dev/null | grep open)
ip_in_lvs=$(ipvsadm -Ln | grep $IP)
if [ -z "$web_stat" -a -n "$ip_in_lvs" ]; then
echo 'stop '"$IP"
ipvsadm -d -t $VIP -r $IP
elif [ -n "$web_stat" -a -z "$ip_in_lvs" ]; then
echo 'start '"$IP"
ipvsadm -a -t $VIP -r $IP -m
fi
done
sleep 5
done
: 9,16s/^/ /
bash monitor_web.sh &
watch -n 1 ipvsadm -Ln
NAT 是 IP 层次,ipvsadm 工作在ip层 tpl01 80端口并没有启动服务!它只是转发IP数据包(也许会有小改动!)到 web01 或web02
添加一条路有规则:
tpl01 让其可以访问外网
route add default gw 172.16.93.2