一.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