keepalived.conf配置文件weight参数

当if条件成立exit 0会让$?等于0,即为真,否则,$?不等于0,即为假

#!/bin/bash

num=`ps -ef|grep -c [n]ginx`
#nginx服务器启动时,num值会大于等于2,关闭时为0,启动时返回1,关闭时返回0
if [ $num -lt 2 ]
then
   exit 1
else
   exit 0
fi
  • 修改10.0.0.5/etc/keepalived/keepalived.conf配置文件
! Configuration File for keepalived
global_defs {
    router_id lb01
}

vrrp_script check_web {
    #定义需要监控脚本(脚本有执行权限)
    script "/root/check_web.sh"
    #执行脚本的间隔时间(秒)
    interval 3
    #权重值参数,主要用于和优先级进行运算
    weight -60
}

vrrp_instance 1997sty {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24
    }
    track_script {
        #调用执行你的脚本信息
        check_web
    }
}
  • 10.0.0.6/etc/keepalived/keepalived.conf配置文件
! Configuration File for keepalived
global_defs {
    router_id lb02
}

vrrp_instance 1997sty {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24
    }
}
  • weight求和运算 : weight数值必须是正数weight+priority提升优先级后可以成为主服务器
  • 求和运算条件 : 权重值为正数,脚本运行后为真,weight+priority
  • weight求差运算 : weight数值必须是负数weight-priority降低优先级后可以成为备服务器
  • 求差运算条件 : 权重值为负数,脚本运维后为假,weight-priority

以上代码演示求差运算,脚本每隔3秒运行一次,脚本输出结果为真,则不进行运算权重值主机运行,脚本在输出结果为假的条件为nginx服务停止,降低权重值后,备份机运行

  • 未运算抓包结果

真.png

  • 运算后抓包结果

假.png

综合架构监控服务

主机名称和IP地址规划

服务 主机名 eth0网卡IP eth1网卡IP 软件
防火墙服务器 firewalld 10.0.0.81 172.16.1.81 firewalld
负载均衡服务器 lb01 10.0.0.5 172.16.1.5 nginx,keepalived
负载均衡服务器 lb02 10.0.0.6 172.16.1.6 nginx,keepalived
web服务器 web01 10.0.0.7 172.16.1.7 nginx
web服务器 web02 10.0.0.8 172.16.1.8 nginx
web服务器 web03 10.0.0.9 172.16.1.9 nginx
存储服务器 nfs01 10.0.0.31 172.16.1.31 nfs
备份服务器 backup 10.0.0.41 172.16.1.41 rsync
数据库服务器 db01 10.0.0.51 172.16.1.51 mysql,mariaDB
批量管理服务器 m01 10.0.0.61 172.16.1.61 ansible
跳板机服务器 jumpserver 10.0.0.71 172.16.1.71 jumpserver
监控服务器 zabbix 10.0.0.72 172.16.1.72 zabbix
缓存服务器 暂无 暂无 暂无 暂无
  1. 对系统不间断实时监控
  2. 实现报警通知 邮件/微信/短信/电话
  3. 实时反馈系统当前状态
  4. 保证服务可靠性安全性
  5. 保证业务持续稳定运行
  6. 掌握架构服务的运行情况
  7. 用于分析公司网站运行情况

综合架构监控服务器常用命令

  • CPU : top,htop,glances

us:user state 用户态信息

sy:system state 内核态信息

id:idle 空闲状态

  • 内存 : top,htop,free

监控内容:内存可用率,swap空间使用情况

  • 磁盘 : df,htop,free

监控内容:

  • 网络 : iftop,glances

监控内容:使用情况,IO消耗

  • 进程 : top,htop,ps,glances

监控内容:占用内存情况,占用CPU情况

  • 负载 : w,top,uptime,glances

监控内容:10分钟负载,15分钟负载 数值应小于CPU内核数

综合架构监控服务器编写脚本

监控内存使用情况

  • 正常使用情况:内存使用率高于80%
  • 异常使用情况:内存使用率低于20% 发送报警

监控服务运行状态

  • ps -ef|grep -c [n]ginx
  • netstat -lntup|grep xxx

综合架构监控服务体系结构

  1. 硬件监控 服务器 路由器 交换机 防火墙(SNMP)
  2. 系统监控 CPU 内存 磁盘 网络 进程 TCP(十一种状态)
  3. 服务监控 nginx php tomcat redis memcache mysql
  4. 网站监控 请求时间 响应时间 加载时间 页面监控
  5. 日志监控 ELK(收集 存储 分析 展示)
  6. 安全监控 Firewalld(4层和4层以上) WAF(Nginx+lua) (应用层面) 安全宝 牛盾云 安全狗
  7. 网络监控 smokeping 监控宝 站长工具 奇云测 多机房
  8. 业务监控 (数据库信息)活动产生多少流量 产生多少注册量 带来多少价值

zabbix监控服务

zabbix软件结构组成

  • zabbix-server : 监控服务端
  • zabbix-agent : 监控客户端
  • zabbix-web : 监控网站服务
  • php : 处理动态请求
  • mysql : 数据库存储监控数据
  • zabbix-proxy : 负责收集agent信息汇总告知zabbix-server

zabbix软件安装部署

  • 软件选择: 4.0 LTS

LTS : long time support 长期支持版

  • 更新yum源
#新版本
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#老版本
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
  • yum下载安装zabbix服务端相关软件

zabbix服务程序软件: zabbix-server-mysql zabbix服务web软件: zabbix-web-mysql httpd php 数据库服务软件: mariadb-server

yum install -y zabbix-server-mysql zabbix-web-mysql mariadb-server zabbix-agent httpd php

yum安装时,yum远来自国外的源,过程出现中断报错,多执行几次命令,多次尝试重新下载后安装完成

  • 软件配置

  • /etc/zabbix/zabbix_server.conf添加数据库密码

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

DBPassword=zabbix
  • /etc/httpd/conf.d/zabbix.conf添加时区信息
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        # php_value date.timezone Europe/Riga
        php_value date.timezone Asia/Shanghai
    </IfModule>
</Directory>

<Directory "/usr/share/zabbix/conf">
    Require all denied
</Directory>

<Directory "/usr/share/zabbix/app">
    Require all denied
</Directory>

<Directory "/usr/share/zabbix/include">
    Require all denied
</Directory>

<Directory "/usr/share/zabbix/local">
    Require all denied
</Directory>
  • 配置相关服务
systemctl start zabbix-server.service httpd mariadb.service
systemctl enable zabbix-server.service httpd mariadb.service
  • 可以选择执行初始化数据库
#初始化数据库
mysql_secure_installation
#设置root密码
mysqladmin password 123456
  • 安装后使用mysql命令进入后配置数据库
#创建zabbix数据库--zabbix
create database zabbix character set utf8 collate utf8_bin;
#创建数据库管理用户
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
  • 导入数据库相应表信息
#如果提示不存在文件或目录可以进入到/usr/share/doc目录找到zabbix-server-mysql-*目录下的create.sql.gz
zcat /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql.gz|mysql -uzabbix -pzabbix zabbix
  • 登录zabbix服务端web界面,进行初始化配置
http://10.0.0.72/zabbix/setup.php
  • 点击Next step

1.png

  • 点击Next step

2.png

  • 输入数据库密码zabbix,点击Next step

3.png

  • Name输入任意名称,点击Next step

4.png

  • 确认无误后,点击Next step

5.png

  • 点击Finish,跳转到登录界面

6.png

  • 登录zabbix服务web页面

  • /etc/zabbix/web/zabbix.conf.php 记录web页面初始化信息

用户名Admin 密码zabbix

  • 界面修改为中文后,添加解决中文乱码问题
#安装字体
yum install wqy-microhei-fonts -y
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf

监控客户端部署流程

  • 更新yum源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
  • 下载安装zabbix客户端
yum install -y zabbix-agent
#或者使用rpm
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
  • 编写/etc/zabbix/zabbix_agentd.conf的zabbix客户端配置文件,指定Server
##### Passive checks related

### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#       and '::/0' will allow any IPv4 or IPv6 address.
#       '0.0.0.0/0' can be used to allow any IPv4 address.
#       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=172.16.1.72
  • 启动zabbix-agent服务,设置开机自启,查看端口是否存在
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -lntup|grep 10050