lvs-linux虚拟化服务器;
lvs集群采用IP负载均衡技术和基于内容分发机制;
一:是通过IPVS模块实现的;
二:集群采用的是 三层结构
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
三:IPVS实现负载均衡有3中方式;
nat:网络地址转移; real=192.168.15.2:80 masq 参数 -m
tun:IP隧道技术实现虚拟服务器; ipip 参数 -i
DR:直接路由实现虚拟服务器; gate 参数 -g
四:负载算法;
1、轮叫调度
将外部请求按顺序1:1分配到真实server 上;
2、加权轮叫调度
根据不同的处理能力来调度请求;
3、最少链接调度
动态的将请求调度到已经建立最少连接的服务器上;
4、加权最少连接调度
优先级的最少连接;
五:安装配置
# yum install ipvsadm -y
1、查看 lvs规则表
# ipvsadm -Ln
2、IPVS 调度状态:
# ipvsadm Lnc
3、添加虚拟服务
# ipvsadm -A -t 172.27.27.89:80 -s rr
# ipvsadm -A -t 172.27.27.89:80 -s wrr
# ipvsadm -S >/tmp/ipvs.bak 备份导出
# ipvsadm -C 清除规则
# ipvsadm -R </tmp/ipvs.bak 还原导入
-A 添加虚拟服务 -E 编辑修改 -D 删除 -C 清空规则;
-t 使用tcp 协议后跟端口
-u UDP 协议
-s LVS 采用的调度算法
-r 设置真实服务器跟端口信息
4、在虚拟服务添加真实服务器
# ipvsadm -a -t 172.27.27.89:80 -r 172.27.27.74:80 -g
-g DR直连路由 -i TUN隧道模式 -m 设置工作模式 NAT 地址转换;
-a 在虚拟服务中添加一台真实服务器
-w 设置权重
{ rr 轮询算法 wrr 加权轮询算法 需要设置权重 }
# ipvsadm -d -t 172.27.27.89:80 -r 172.27.27.74:80
-d 删除虚拟服务提供的真实服务器
# service ipvsadm save
# sysctl -p 重新加载 sysctl.conf
# ipvsadm -A -t VIP:0 -s rr
# 设置当客户端访问服务器VIP的任意端口都可以被调度至后端的real server
查看LVS的连接情况:ipvsadm -L -n
查看LVS的吞吐量情况: ipvsadm -L -n --rate
查看LVS的统计信息:ipvsadm -L -n --stats
实时查看LVS连接状态变化: watch ipvsadm -ln
六:keepalived 路由热备软件
主要通过VRRP功能 解决静态路由出现单节点故障问题;
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除;
七:安装配置
# yum install -y yum install gcc gcc-c++ popt openssl-devel popt-devel libnl libnl-devel kernel-devel ipvsadm
# yum install keepalived -y
1/实例配置:
# /etc/keeplived/keepalived.conf
可以分为三部分;
1、全局设置定义:告警机制
2、VRRP示例部分; 配置 state MASTER主机
3、real server 设置;配置服务节点;
[root@VM ~]#cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_Master
}
vrrp_instance VI_1 {
state BACKUP
# 备用设置 backup 主机安装默认是master
interface eth0
virtual_router_id 51
priority 90
# 在相同的VRID 组中优先级高的为主设备
# master 可以设置为100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.27.10.100/24 dev eth0 label eth0:1
# 虚拟IP 地址
}
}
virtual_server 172.27.10.100 80 {
# 虚拟 IP
delay_loop 6
lb_algo rr
# 轮询
lb_kind DR
# lvs 模式
# nat_mask 255.255.255.0
# persistence_timeout 50
protocol TCP
real_server 172.27.10.11 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.27.10.12 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
ip addr show 可以查看配置信息;
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:48:2c:d2 brd ff:ff:ff:ff:ff:ff
inet 172.27.27.75/24 brd 172.16.15.255 scope global eth0
inet 172.27.27.89/24 scope global eth0
inet6 fe80::a00:27ff:fe48:2cd2/64 scope link
valid_lft forever preferred_lft forever
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.27.27.89:80 rr
-> 172.27.27.74:80 Route 1 0 0
-> 172.27.27.75:80 Route 1 0 0
八;
Nginx 设置;
1、安装nginx(或者其他web服务器)
设置一个站点页面;
# vi /opt/nginx/conf/nginx.conf
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 172.16.15.150;
location / {
root /opt/nginx/server
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3、添加VIP 设置 arp_announce和arp_ignore 这两个参数;
# touch /etc/init.d/lvsvip.sh
# chmod 755 lvsvip.sh
# /etc/init.d/lvsvip.sh start
# cat lvsvip.sh
# arp_ignore
# 1 -- 只有ARP请求数据包所请求的IP地址属于当前网卡的IP地址,才会回应ARP响应数据包。
# 2 -- 除了满足1的条件外,还要满足ARP请求数据包的发送方IP地址也属于当前网卡所属子网,这样才会回应ARP响应数据包。
# 3 -- 如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。
# 4~7 -- 保留
# 8 -- 即使ARP请求数据所请求的IP地址属于任何一个本地地址,也不回应ARP响应数据包。
#add for chkconfig
#chkconfig: 2345 70 30 #234都是文本界面,5就是图形界面X,70启动顺序号,30系统关闭,脚本
#止顺序号
#description: RealServer's script #关于脚本的简短描述
#processname: realserver.sh #第一个进程名,后边设置自动时会用到
#!/bin/bash
VIP=172.16.15.150
source /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
好记力不如个烂笔头 何况我记忆力都不咋的 多年前随笔记记 以后看看