一.LVS概述
1.什么是lvs:
lvs是一个实现负载均衡集群开源软件项目,lvs逻辑上可以分为调度层,server集群层和共享层
2.特点:免费,开源,四层负载均衡
3.Lvs工作原理

4.lvs调度算法:
- 静态调度算法
- 轮询
RR 轮询**
均等的对待每一台服务器,而不管服务器上实际的连接数和系统负载
- 加权轮询
WRR 加权轮询**
调度器可以自动询问真实服务器的负载情况,并动态的调整其权值
- 目标地址hash**
DH 目标地址hash**
通过一个散列函数将一个目标IP地址映射到一台服务器
- 源地址hash
SH 源地址hash**
- 组成及相关术语
- 组成
Ipvs----是真正生效实现调度的代码
Ipsadm----负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端真正的服务器
lvs组成=ipvsipv+sadm
- 术语
二.环境准备
主机名 功能 IP地址
Nat 负载均衡调度器(ds.director,ntp服务) vip:192.168.2.199 dip:192.168.1.164
Web01 真实web服务器Rs(rs.realserver) 192.168.2.200
Web02 真实web服务器Rs 192.168.2.201
DNS dns服务 192.168.2.188
Client 192.168.2.180
都要关闭防火墙,关闭selinux,启动网卡
1.Web01和web02机器
给web01和web02安装nginx
yum -y install nginx
启动
nginx
改变两台机器的nginx页面内容
root@web01 \~\]# echo "web---------01" \> /usr/share/nginx/html/index.html \[root@web02 \~\]# echo "web----------02" \> /usr/share/nginx/html/index.html 2.net主机 配置两给网卡和IP地址,一个对外的vip,一个对内的dip,现在主要使用nat网络模式,可以配置桥接模式对外,nat对内,教师机不方便配置桥接模式,所以都是配置的nat模式,但是一定要分清楚哪个是vip,哪个是dip,在物理主机上都要能够ping通。 3.配置Dns服务器 关闭防火墙 systemctl stop firewalld systemctl disable firewalld.service 关闭selinux vim /etc/selinux/config SELINUX=disabled 关闭NetworkManager systemctl stop NetworkManager systemctl disable NetworkManager.service 安装bind \[root@dns \~\]# yum -y install bind 配置主配置文件 \[root@dns \~\]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost; any; }; 配置zones文件 \[root@dns \~\]# vim /etc/named.rfc1912.zones //在最后添加 zone "jj.qd" IN { type master; file "jj.qd.zone"; allow-update { none; }; }; cd /var/named/ cp -p named.localhost jj.qd.zone 配置zone文件 vim jj.qd.zone nat A 192.168.2.199 ds A 192.168.2.188 web01 A 192.168.2.200 web02 A 192.168.2.201 named-checkconf /etc/named.conf named-checkconf /etc/named.rfc1912.zones named-checkzone jj.qd.zone jj.qd.zone systemctl start named systemctl enable named.service 4.client主机 vim /etc/resolv.conf进去全删了 vim /etc/sysconfig/network-scripts/ifcfg-ens33 //进去添加 DNS1=192.168.2.188 在client访问 \[root@client \~\]# ping nat.jj.qd \[root@client \~\]# ping ds.jj.qd \[root@client \~\]# ping web01.jj.qd \[root@client \~\]# ping web02.jj.qd 同步时间 \[root@dns \~\]# yum -y install ntpdate.x86_64 ntpdate cn.ntp.org.cn crontab -e \* 2 \* \* \* /usr/sbin/ntpdate cn.ntp.org.cn yum -y install ntp 启动服务 systemctl start ntpd systemctl enable ntpd NAT模式搭建实战 5.nat服务器配置 安装ipvsadm yum -y install ipvsadm 清空以往的规则 \[root@net \~\]# ipvsadm -C 查看规则 \[root@net \~\]# ipvsadm -L -n 新增规则 \[root@net \~\]# ipvsadm -A -t 192.168.1.164:80 -s rr //-A添加虚拟服务,-t添加主机 \[root@net \~\]# 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.1.164:80 rr server' command \[root@net \~\]# ipvsadm -a -t 192.168.2.199:80 -r 192.168.2.200:80 -m server' command \[root@net \~\]# ipvsadm -a -t 192.168.2.199:80 -r 192.168.2.201:80 -m