lamp(lnmp)所代表的含义:
L:很显然L代表linux系统。
A:表示apache,在传统行业中,多数采用apache服务器。
N:Nginx是一个高性能的HTTP和反向代理服务器。
M:表示数据库,多数采用mysql或mariadb。
P:表示php、python、perl等等编程语言。
LVS中文站点网址
本节以DR模式展开学习
1.再克隆两台虚拟机computer3(192.168.1.12)和computer4(192.168.1.13),然后分别给两台虚拟机安装httpd,这两台虚拟机作后端,之前的computer1和computer2作LB。
设置index.html,为了以示区别这里computer3和computer4的index.html不同(在实际中,这两个后端的页面是相同的)。
2.在computer1中安装ipvsadm这个工具,它用来控制lvs内核。
3.配置规则(前提条件一:调度器和真实主机必须在一个VLAN中;条件二:调度器和真实主机拥有相同的VIP;条件三:真实主机上需要配置noarp)
在computer1中进行
-A:添加一个虚拟服务器
-a:在一个虚拟服务器中添加一个真实服务器
-t:说明虚拟服务器提供的是tcp服务
-s:指定使用的调度算法 rr:一个最均衡的调度算法
-r:指定真实的服务器
-g:指定lvs的工作模式为直接路由模式(lvs的默认模式)
-l:显示虚拟服务器表
-n:输出数字形式的ip地址和端口
注意:真实服务器的端口要和虚拟服务器端口保持一致,dr模式不支持端口转发。
在computer1上添加虚拟地址192.168.1.200
在computer3和computer4上也加入192.168.1.200这个地址,否则会出错。
在另一台主机上测试,发现返回的一直是computer3中的测试页。
-a:显示本机的arp缓冲区内容 -n:使用数字方式显示
查看这台主机绑定的mac地址,发现这个mac地址是computer3的mac地址。
删除现有绑定的mac地址后重新访问,发现直接访问computer3,并没有经过调度器。
在computer3和computer4上安装arptables(也可以修改内核参数,不过不够直观)一般不用管这个服务,它是内核功能,用于保存策略。
-d:指定目标地址 -s:指定源地址 mangle:英文含义损毁 arptables-save:保存arp表
第一步的目的是隐藏computer3和computer4内部的192.168.1.200这个ip地址(即进来的时候不能直接访问200)客户端不直接访问vip;第二步是转换192.168.1.200为192.168.1.12或13(出去的时候转化200为真实的ip地址)192.168.1.12或13以自己的身份发送资源给客户端。
重新在192.168.1.1主机上清arp缓存,发现轮询成功!并且arp缓存显示为computer1的mac地址
keepalived即为高可用或热备,它是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。
补充:
VRRP协议(虚拟路由冗余协议)是keepalived实现的基础,可以认为是实现路由器高可用的协议。多台提供相同功能的路由器组成一个路由器组,这个组里有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时候就需要根据VRRP的优先级来选举一个backup当master,这样的话就可以保证路由器的高可用了。
1.在computer1和computer2上安装keepalived
2.清空computer1之前配置的ipvsadm(为了避免keepalived受到干扰)并删除其上的vip,让集群自己管理。
3.编辑keepalived的配置文件
如果输入mail没反应的话记得安装mailx
notification_email_from:发送通知邮件时邮件源地址
smtp_server:发送email时使用的smtp服务器地址(这里使用本机地址)
smtp_connect_timeout:smtp连接超时时间
vrrp_strict:严格执行vrrp协议规范(这里将其注释掉)
master一直发包,backup一直收包,这里注意master的优先级一定要高于backup。
interface:这里将eth0改为ens33
advert_int:发包的频率即心跳频率,keepalived的心跳是通过vrrp协议实现的,两个节点的设置必须一样。
virtual_ipaddress:虚拟ip
delay_loop:对RS的健康检查频率,这里每隔6s检查一次。
lb_algo:lvs调度算法(rr权重为1,若要改变权重则使用wrr)
lb_kind:lvs集群模式(必须大写)
persistence_timeout:在这段时间内持续连接RS(注释掉,否则在50s内一直拿到相同RS的资源)
将SSL_GET改为TCP_CHECK,并删掉底下一部分内容。
把virtual_server底下的内容全部删除,复制一份real_server。
将keepalived.conf传给computer2
在computer2中修改master为backup;priority为50(数字越大优先级越高)其他不变。
4.在master端和backup端启动keepalived,查看日志。
出现vip
注意:在这里一定要记得给computer3和computer4加上vip地址,否则curl vip时会报“Connection timed out”的错!!!
5.测试
这里本应在一个与实验不相干的虚拟机上测试,由于我的电脑只能同时开4台虚拟机,这里就用computer2测试了。
1.将computer3的httpd停掉
可以在computer1中查看当前邮件(file查看一共有多少封邮件)
发现computer3down掉了
2.把computer4的httpd停掉
此时无法访问vip
在computer1中查看最新邮件,发现computer4down掉了。
补充:如果在computer1中也开启了httpd服务,是不会影响的,如果发现了vip会直接交给lvs处理。
1.将computer1的keepalived服务down掉
2.发现不影响服务,此时vip在computer2上。并且我们不需要手工处理arp,它会自动修改mac地址为computer2的mac地址。
3.再将computer1上的keepalived开启,发现vip回来了。
补充1:keepalived不具有服务级别的功能,不能监管vip。
(1)将vip从computer1摘除
发现服务不能正常进行。
(2)将vip重新加到computer1上
发现服务恢复正常
补充2:如果虚拟机的网卡命名不是按第一块网卡(eth0)、第二块网卡(eth1)…命名的话,进行下图操作。
(1)在rehl7中编辑/boot/grub2/grub2.cfg文件
在rehl8中编辑/boot/grub2/grubenv文件
(2)重启电脑
发现网卡重新命名