2018-07-20 课后笔记

18.1 集群介绍

3a3c7c61d2a316df4fd7140e22028d9c6c7.jpg

18.2 keepalived介绍

f4af03bffd7e2acaa0ac6e6f8812313c233.jpg

18.3/18.4/18.5 用keepalived配置高可用集群

1.第一步准备二台机器,两台机器都执行yum install -y keepalived

90240935b26877afa1f537370bde58f5342.jpg

73860ee2e50fb3103c7e6ebfd9b68ccf064.jpg

2.第二部 二台机器都要安装keepalived

第一台

1f29bcf4fd5872dae6b87cac6c152903ab0.jpg

第二台

9b2d9e797088ee569e473a45277f768d12a.jpg

3.二台机器要开启nginx服务

5321c05219348d80463f6c87b2099075330.jpg

a1b2373e5e7899b9761479f0fa35702b8cd.jpg

4.要在master机器上配置keeplived配置文件,需要把之前的keeplived文件的内容清空

49ae9581b9c1ab063e81fa30fa83ad3bef6.jpg

然后加入如下内容

[root@liuhongwei-01 ~]# vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {                定义接受告警的人
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com       定义发邮件地址,
   smtp_server 127.0.0.1        定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务发送
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {                为自定义的名字
    script "/usr/local/sbin/check_ng.sh"      自定义脚本,该脚本为监控nginx服务的脚本
    interval 3                         每隔三秒执行一次该脚本
}

vrrp_instance VI_1 {
    state MASTER                       角色为master
    interface ens33                     针对哪个网卡监听VIP
    virtual_router_id 51                
    priority 100                       权重为100,master要比backup大
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com       定义密码,这个密码自定义
    }
    virtual_ipaddress {
        192.168.188.100                定义的VIP
    } 

    track_script {
        chk_nginx
    }

}

5.然后在我们定义的脚本路径,定义一个监控nginx的脚本

78ed589622ffc0da233448831c1e00820ad.jpg

6.编写完脚本之后,需要给文件加上755权限,如果没有这个权限就不会自动加载

a52b952a281a88e2c5adb68b285d2a41402.jpg

7.上面工作准备完成后,在129(master)主机上开启keeplived服务。

4e37aa30480176dab6586410eeb148f2441.jpg

8.然后看一下keepalived的进程有没有起来

a8d87c25f82bb6a9439c86e8a7e3a7eae41.jpg

9.然后在看一下nginx服务有没有起来

758cd1347c35f9350c803d37b3b42fd9e14.jpg

10.keepalived的日志在这个目录下

da7b7297bcbbaf7c5d4d651c3385f6dc778.jpg

11.我们查看一下VIP

1a0ce553b31464ca960201d41069424ac8c.jpg

注明:这个公网ip vip是不能用ifconfig查看的,只能用ip add查看

12.在配置从机器(backup)之前要看一下有没有防火墙规则,以及selinux之类的,有的话需要清除防火墙规则,以及关闭selinux

e6faf96c103f434569439482fd079c6cc10.jpg

bea9189dcf5594c8e7ec89f205092f16f7f.jpg

临时关闭selinux

13.同样从机器上也要检查一下防火墙规则以及selinux的状态

e52ffdf446be03e7030abdb0dbacb26fe75.jpg

4f8db9e3de8d0690595924079e3ae2155b6.jpg

我们关闭nginx服务之后,可以看到还是可以自动开启nginx服务,也是因为开启keepalived服务,就会自动帮助我们开启nginx服务
[root@liuhongwei-01 ~]# systemctl stop nginx
[root@liuhongwei-01 ~]# ps aux|grep nginx
root      5444  0.0  0.0 112664   960 pts/0    R+   16:08   0:00 grep --color=auto nginx
[root@liuhongwei-01 ~]# ps aux|grep nginx
root      5464  0.0  0.1  45980  1300 ?        Ss   16:08   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    5468  0.0  0.4  48468  4188 ?        S    16:08   0:00 nginx: worker process
nobody    5469  0.0  0.3  48468  3936 ?        S    16:08   0:00 nginx: worker process
root      5471  0.0  0.0 112664   960 pts/0    R+   16:08   0:00 grep --color=auto nginx
[root@liuhongwei-01 ~]# ps aux|grep nginx
root      5464  0.0  0.1  45980  1300 ?        Ss   16:08   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    5468  0.0  0.4  48468  4188 ?        S    16:08   0:00 nginx: worker process
nobody    5469  0.0  0.3  48468  3936 ?        S    16:08   0:00 nginx: worker process
root      5479  0.0  0.0 112664   964 pts/0    R+   16:08   0:00 grep --color=auto nginx
[root@liuhongwei-01 ~]# 

14.接着去backup上 130备用机去编辑配置文件

首先还是需要把从机器上的keepalived内容清空

edd865746de875ec7dac543ca49c989029c.jpg

15.然后编辑配置文件,加入如下内容

vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP     这个地方显示是从机器
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.73.100    需要改成和主机一样的vip
    }

    track_script {
        chk_nginx
    }

}

c56660ea32b5242f06555bfad18beeabca5.jpg

16.也需要在从机器上编辑一个监控脚本

35df36ada28769d1202baa29cdeaf08a991.jpg

17.同样给监控脚本加上755权限

c0ca6d6f569eab75aa6486df850ac0e68a8.jpg

18.启动keepalived服务

9919b423f9f3e7b7c934afebd152a6c84a9.jpg

19.怎么区分主和从的nginx 的区别

先用浏览器访问主的ip地址

ab0e2c27ba4545b8d9db2c1d1db167a725a.jpg

因为之前我们配置过nginx,可以配置一下nginx 的配置文件,可以更改

b0ff00f42861581e3d7c931912f73df0324.jpg

934ca1251f0c91afceba8c30887f5b87bc5.jpg

d3676bac7772cfd59774be934c3408b5795.jpg

20.同样我们也把从机器上的nginx配置文件更改一下,为了区分:

ff707874b3152f65c247cfef5f3657a26ef.jpg

cfbae313b8e5a46825a7d8eb1ea4c698e76.jpg

21.我们做实验的时候要用浏览器访问VIP也就是我定义的192.168.93.100

0c1ccf6a7d88ce8149305e2d15787acd968.jpg

现在说明我们访问的是master机器,也就是主机器

22.正式测试 模拟生产环境中,主机宕机的情况。最简单的方法就是把master机器的keepalived服务停止

e1493c90541eaf2841be09cbe4a1376a9f7.jpg

4907c26b5cba4b580118bff2f925271eef1.jpg

停止了keepalived服务,vip会释放,去从机器上看一下

3c878a6af74a112719363e1c0ed2adf98f0.jpg

23.看一下从机器上的日志

962a48db74b1deb5535c801710706728728.jpg

24.在用浏览器访问一下:

69dabcf8c986b8be915d8dd7f5bb2e1fe24.jpg

可以看到访问到了backup的机器上了,说明keepalived服务已经到从机器上了

25.接着在主机开启keepalived服务,再看一下

7391fb987ef10aa35340396a4ffcaccf7ab.jpg

ae7fa20667ec4b8d8a65de37b4b84b4cb53.jpg

26.一般keepalived高可用集群是最少二台机器的,但是如果多个backup机器,就把权重调整,权重越大,优先级就越大。


18.6 负载均衡集群介绍

ad5d2e3f47c12bca6deeb860cddbbc6b318.jpg


18.7 LVS介绍

a5e36a081fd5cf60ef8936d10ae86fb1e72.jpg

67de24686dccfa439acfc645b563dc819b9.jpg

961c9be1ce34f89fd0e0f8c388404785f9d.jpg

0caddc979f0088e4c8b1be547179485ee95.jpg

综上所述,nat模式就是做iptables路由转发 IP Tunnel模式实际上是更改目标IP DR模式更改目标MAC地址

18.8 LVS调度算法

f4b1a8f86aeafb5c83aac3edb570609db7f.jpg

18.9/18.10 LVS NAT模式搭建 

1.准备工作

3e0459b548780f2cdc595d1b5e353ae64c9.jpg

我这里外网设置为67.144

7e7a1324e90464c862e8b8e6def7d8dbaaa.jpg

2.需要给01机器添加一个网卡

要设置仅主机模式

f3a845777452ef8d4c002e5e5ce77d9b89c.jpg

然后看一下仅主机的ip段

39ae00ad805944345e8cee162985cdd4fa2.jpg

3.然后在给仅主机的的ens37 设置一下ip 不用设置网关

[root@liuhongwei-01 network-scripts]# cp ifcfg-eno16777736 ifcfg-ens37
[root@liuhongwei-01 network-scripts]# ls
ifcfg-eno16777736  ifdown-ippp    ifdown-Team      ifup-ib     ifup-ppp       init.ipv6-global
ifcfg-ens37        ifdown-ipv6    ifdown-TeamPort  ifup-ippp   ifup-routes    network-functions
ifcfg-lo           ifdown-isdn    ifdown-tunnel    ifup-ipv6   ifup-sit       network-functions-ipv6
ifdown             ifdown-post    ifup             ifup-isdn   ifup-Team
ifdown-bnep        ifdown-ppp     ifup-aliases     ifup-plip   ifup-TeamPort
ifdown-eth         ifdown-routes  ifup-bnep        ifup-plusb  ifup-tunnel
ifdown-ib          ifdown-sit     ifup-eth         ifup-post   ifup-wireless
[root@liuhongwei-01 network-scripts]# vi ifcfg-ens37 

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=1a6dc668-1e56-4388-af94-c2f013a74b14
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.67.144
NETMASK=255.255.255.0
#GATEWAY=192.168.93.2
DNS1=119.29.29.29
~                         

在做这一项的操作时,不仅需要把网关注释掉,也需要把UUID这一行也要注释掉,否则不能启动网卡

4.然后启动网卡ens37

1ed0288f9420bf24944308e09547783a784.jpg

[root@liuhongwei-01 network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.93.129  netmask 255.255.255.0  broadcast 192.168.93.255
        inet6 fe80::20c:29ff:fe6c:a8e4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:a8:e4  txqueuelen 1000  (Ethernet)
        RX packets 5894  bytes 653680 (638.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2015  bytes 268714 (262.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.67.144  netmask 255.255.255.0  broadcast 192.168.67.255
        inet6 fe80::20c:29ff:fe6c:a8ee  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:a8:ee  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

5.然后看一下  能否能ping通

cb8adf2f195f6235475100eaa62116e6b3c.jpg

6.然后把其他二台机器的网关设置成01机器的ip

dfb09d5c0c18de37d85d5f27ce89bf5b5f0.jpg

5127824767888b9c5553dc7b3f619a3a920.jpg

071cd82cbf74eb77dee80b244f73813cef6.jpg

2807eb34da1472bb38de07e37ab152ea7a4.jpg

7.然后三台机器都要关闭防火墙

b8a63153e1d89710df39f73bbd8ee3042a9.jpg

56fc7299e1634746f1eed716e9d767049b9.jpg

171d560031c0ac85f30eb99657a6146ceec.jpg

8.各自下载iptables 并清空规则和保存

c5de67d8517296f1f37b56e7e648a89331e.jpg

d9401c6e6ce58fb66bd9b3d0eb2228817ff.jpg

9.然后关闭selinux

10.在dir上安装ipvsadm

b3ae3fa5f9a66e7d8062df70ef4bf8229b4.jpg

安装它是为了实现lvs功能

11.在dir上编写脚本,vim /usr/local/sbin/lvs_nat.sh//内容如下

dbae1ce46199ffa329f87b0adab8045476c.jpg

319995b4be8341fa586bc83fa3345a79591.jpg

12。然后执行一下脚本

.50058e05000e2efc9e41975f5a193b1cc6c.jpg

没有输出就没有错误

13.测试效果

需要rs二台机器上安装nginx

8232fe3192344a41cd512b051b57155dc3b.jpg

b8cd61107affc1f0dabf898e49b216f25a3.jpg

14.二台nginx上需要设置不同的主页,便于区分

首先02

229f14450087ee10fedb18d749d15748712.jpg

03

61a3f7db0f23e8d027ab0c0d612b4e55119.jpg

15.然后就是去浏览器测试,访问公网ip

6d6d877835d479fef5e8f3f15d2ec5d63b2.jpg

第一次访问的是03,在刷新几次看看

6b16f34140330b44df8d5fe169aac2b03e7.jpg

在刷新的时候就是02了访问02的机器

16.也可以在01机器上curl测试一下

aca20a2e2ecb961645f580424c43c78fdf2.jpg

这就说明成功了 

 

 

转载于:https://my.oschina.net/u/3851487/blog/1860785

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值