day-49 高可用冗余服务(keepalived)

00.课程介绍部分
    1.高可用服务概念介绍
    2.高可用服务部署过程
    3.高可用服务常见问题
    4.高可用服务安全配置
    5.高可用服务双主配置
01.课程知识回顾
    1.负载均衡的两个模块
        upstream 模块  实现负载均衡
            第一种:根据能力进行分配  ip后加weight=x;  按比例进行权重分配资源
            第二种:根据后端节点健康状态分配
                max_fails=3;      问题节点发送请求次数
                fail_timeout=5s;  再次发送时间
            第三种:热备节点  backup  (所有节点都坏了才行)
            第四种:根据节点连接数进行分配 添加 least_conn (连接数少的多分配)
            第五种:源IP地址哈希值分配  ip_hash  

        proxy  模块  实现反向代理

            功能一:解决访问网站时看到不同的页面
                    proxy_set_header Host $host;
            功能二:web节点中显示真实用户IP地址
                    proxy_set_heade X-Forwarded-For $remote_addr;
            功能三:根据页面显示信息进行健康检查
                    proxy_next_upstream error timeout http_403 http_404;
                  配置之后一定显示正确页面
    2.利用负载均衡实现动静分离
        写三个upstream
         三个location
    3.根据客户端显示不同页面的信息
        location中加if 判断语句
02.高可用冗余服务介绍
    作用说明:避免单点故障
        哪里会出现单点故障?
        01.负载均衡服务
        02.数据库服务   高可用(MHA)
        03.存储服务器   NFS如何实现高可用 keepalived实现高可用(脚本)  heartbeat+drbd(同步数据)
        04.备份服务器   再加一台备份服务器  数据同步
    
    实现方式:利用keepalived服务软件
        keepalived软件介绍:
        01.利用keepalived软件实现管lvs服务
        02.利用keepalived软件实现后端节点健康检查功能
        03.利用keepalived软件可以实现冗余功能 **

    利用keepalived如何实现了高可用(原理)
    利用了vrrp协议:
03. 高可用服务部署过程:
    架构环境准备:
        lb01   10.0.0.5   nginx keepalived 
        lb02   10.0.0.6   nginx keepalived 
        web01  10.0.0.7   nginx 
        web02  10.0.0.8   nginx 
        web03  10.0.0.9   nginx 

    第一步:web服务器环境
    web-www.conf 
        server {
           listen            80;
           server_name       www.oldboy.com www.jd.com;
           root              /html/www;
           index             index.html;
        }
     web01:
        # cat /html/www/oldboy.html 
         web01 
     web02:
        # cat /html/www/oldboy.html 
        web02 
     web03:
        # cat /html/www/oldboy.html 
        web03 

      测试后端节点:
        curl -H host:www.oldboy.com 10.0.0.7/oldboy.html
        curl -H host:www.oldboy.com 10.0.0.8/oldboy.html
        curl -H host:www.oldboy.com 10.0.0.9/oldboy.html    
        

    第二步:安装负载均衡服务并进行配置
    编写nginx配置文件
        upstream oldboy {
          server 10.0.0.7:80;
          server 10.0.0.8:80;
          server 10.0.0.9:80;
        }   
        server {
          listen        80;
          server_name   localhost;
          location / {
             proxy_pass  http://oldboy;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $remote_addr;   
          }
        }

    第三步:安装keepalived服务 lb01 lb02
            yum install -y keepalived


    第四步:编写lb01中 keepalived配置文件   lb01和lb02配置文件需更改
        # 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 192.168.200.1
           smtp_connect_timeout 30
需要改    router_id LVS_DEVEL          ---标识每个主机身份名称
           
        }
需一致 vrrp_instance VI_1 {            ---设置一个家族
需要改     state MASTER                ---设置一个主机为主服务器
            interface eth0              ---设置指定网卡上生成VIP地址
需一致     virtual_router_id 51        ---设置主备一致,数值需要相同
需要改     priority 100                ---优先级越高,越有可能成为主
            advert_int 1                ---组播包发送间隔(接收与发送也需要相同)
            authentication {            ---设置组播通讯认证进制
                auth_type PASS          
                auth_pass 1111
            }
            virtual_ipaddress {
需要改         10.0.0.3                ---设置vip地址数值信息
            }
        }

        systemctl restart keepalived.service
04.keepalived高可用服务常见问题
    1.高可用脑裂问题(高可用集群中,多台主机都有vip地址了)
        出现原因:主服务器还活着,备服务器收不到组播报
        01.防火墙服务开启了,阻止组播报通讯
        02.主备服务器之间心跳线出现问题
        03.仲裁服务器出现服务器

    如何监控发现出现了脑裂问题:
        lb02编写监控脚本 --- 监控备服务器有没有出现vip地址
        备服务器出现vip原因
        1.正常主备切换
        2.出现了脑裂问题

        #!/bin/bash
        ip a|grep 10.0.03 &>/dev/null
        if [ $? -eq 0 ]
        then
           echo "master and backup change"|mail -s "check keepalived server 971115"@163.com
        fi

    2.keepalived存在价值
        nginx负载均衡服务停止  keepalived服务也应该停止运行
        第一步:编写监控nginx服务状态脚本
            方法一:监控nginx服务进程状态
            ps -ef|grep nginx    
            方法二:监控nginx服务端口状态
            netstat -lntup|grep 80

                #!/bin/bash
                port_info=$(netstat -lntup|grep -w 80|wc l)

                if [ port_info -eq 0 ]
                then
                   systemctl stop keepalived
                fi

        第二步:将脚本信息调用到keepalived配置文件中
        在配置文件中添加
            vrrp_script check_web {                         ---定义需要监控脚本文件信息
                script "/server/scripts/check_web.sh"       ---绝对路径定义脚本文件所在位置/执行权限
                interval 2                                  ---脚本执行间隔周期           
                weight 2                                    ---值 分为正值和负值                       
            }
        在配置文件中的vrrp下添加
            track_script {                         --- 定期运行监控脚本
                 check_web
            }

            curl www.oldboy.com  --> 不等于200
            如何取出状态码信息
            curl-I www.oldboy.com -s |awk 'NR==1{print $2}'
            curl -I www.oldboy.com -o /dev/null -s -w "%{http_code}\n"
05.企业中服务网络安全访问配置
    目的:尽可能不暴露企业服务器IP地址信息给客户

    第一步:修改lb负载均衡配置文件    (监听改成只监听10.0.0.3)
            upstream oldboy {
              server 10.0.0.7:80;
              server 10.0.0.8:80;
              server 10.0.0.9:80;
            }   
            server {
              listen        10.0.0.3:80;
              server_name   localhost;
              location / {
                 proxy_pass  http://oldboy;
                 proxy_set_header Host $host;
                 proxy_set_header X-Forwarded-For $remote_addr;   
              }
            }
    注意项:
        01.nginx程序涉及到IP地址修改  必须重启nginx 
        02.监听的地址必须是本地网卡上有的地址
    如何监听网卡上没有的网址?
        echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
        立即加载配置文件
        sysctl -p
06.课程知识总结说明
    1.keepalived服务配置过程(配置文件如何修改)
        查看日志:tail -f /var/log/messages
    2.keepalived服务配置常见问题
        1.脑裂问题
        2.keepalived服务存储价值(nginx关闭keepalived也需要关闭)
    3.实现将网站物理IP不暴露给用户
        nginx地址监听功能:监听 vip
07.作业:
    研究keepalive配置文件中weight参数作用
    
    假定weight值为W,初始的优先级为P
    当weight值小于0时:

            如果检测脚本返回值=0,则节点最终优先级不改变;

            如果检测脚本返回值≠0,则节点最终优先级=P-W,优先级会减小。

    当weight值大于0时:

            如果检测脚本返回值=0,则节点最终优先级=P+W,优先级会增加;

            如果检测脚本返回值≠0,则节点最终优先级不改变。    


编写监控网站页面是否正常的脚本:
    #!/bin/bash
    code_info="$(curl -I -s -o /dev/null -w "%{http_code}\n" -H hosts:www.oldboy.com 10.0.0.3)"

    if [ $code_info -eq 200 ] 
    then 
        exit 0
    else
        exit 1
    fi
    权重数值为负值
问题解决: 数据库备份恢复后, root用户密码失效了
        mysql数据库:
           备份数据库: 所有数据信息 -转换-> 命令信息(SQL)
           恢复数据库: 执行SQL语句  创建库 创建表 添加没有信息
           mysql.user: 用户信息记录表 
           grant  授权操作 ---> 立即生效
           insert 插入操作 ---> 不会立即生效 ---> flush privileges(刷新权限)
           
           恢复完数据之后 ---> flush privileges(刷新权限) --> 识别到root用户的密码信息
           
        第一步: 在web01服务器上备份数据
        第二步: 将备份数据传输到52数据库服务器
        第三步: 在52数据库服务器中安装mariadb服务, 恢复数据 
        第四步: 空密码直接进入数据库,刷新权限 
        第五步: 重新登录数据
           mysql -uroot -poldboy123
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容