UDP负载均衡高可用解决方案,概述、配置详解、搭建、监控全流程—傻瓜式部署手册

UDP负载均衡高可用解决方案,概述、配置详解、搭建、监控全流程

一、概述

1.1 nginx简介

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强

1.2 为什么使用Nginx

在传统的Web项目中,并发量小,用户使用的少。
所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。

因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题👇:
● Tomcat8 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,也可以将其改大。
● 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
● 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。
● 操作系统对于进程中的线程数有一定的限制:
   ○ Windows 每个进程中的线程数不允许超过 2000
   ○ Linux 每个进程中的线程数不允许超过 1000 (在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。)
   ○ Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。

# 更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
maxThreads="150" # 最大并发数 
minSpareThreads="10"		# 初始化时创建的线程数
maxSpareThreads="500"		# 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

1.3 高并发

通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。
● 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
● 吞吐量:单位时间内处理的请求数量。
● QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
● 并发用户数:同时承载正常使用系统功能的用户数量。

1.4 正向代理反向代理

1.4.1 正向代理

  是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

1.4.2 反向代理

  是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

1.4.3 正向代理和反向代理的区别

正向代理
  是在客户端的。比如需要访问某些国外网站,我们可能需要购买vpn。并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。
在这里插入图片描述


反向代理
  反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。
在这里插入图片描述

1.5 HTTP常见状态码列表

在这里插入图片描述

1.6 软件包下载地址

nginx: 
	http://nginx.org/en/download.html
keepalived:
	https://www.keepalived.org/download.html

二、nginx详解

2.1 nginx配置详解

├── conf                                             # 这是nginx所有配置文件的目录
│   ├── fastcgi.conf                                     # fastcgi 相关参数的配置文件
│   ├── fastcgi.conf.default                       #   fastcgi.conf 的原始备份
│   ├── fastcgi_params                             #   fastcgi的参数文件
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                                  #  媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                                  #  nginx默认的主配置文件
│   ├── nginx.conf.default
│   ├── scgi_params                               # scgi 相关参数文件
│   ├── scgi_params.default
│   ├── uwsgi_params                          #  uwsgi相关参数文件
│   ├── uwsgi_params.default
│   └── win-utf
​
├── fastcgi_temp                               #  fastcgi临时数据目录
​
├── html                                            #  这是编译安装时nginx的默认站点目录,类似Apache的默认站点htdocs  
│   ├── 50x.html                                 # 错误页面优雅替代显示文件,例如:出现502错误时会调用此页面error_page 500 502 503 504 /50x.html
│   └── index.html                               # 默认的首页文件,index.html\index.asp\index.jsp来做网站的首页文件
​
├── logs                                              # nginx默认的日志路径,包括错误日志及访问日志
│   ├── access.log                              #  nginx的默认访问日志文件,使用tail -f access.log,可以实时观看网站的用户访问情况信息
│   ├── error.log                              #   nginx的错误日志文件,如果nginx出现启动故障可以查看此文件
│   └── nginx.pid                             #   nginx的pid文件,nginx进程启动后,会把所有进程的ID号写到此文件
​
├── nginx-1.6.3 -> /application/nginx-1.6.3
├── proxy_temp                                # 临时目录
├── sbin                                            # 这是nginx命令的目录,如nginx的启动命令nginx
│   ├── nginx                                    # Nginx的启动命令nginx
│   └── nginx.old
├── scgi_temp                                 # 临时目录
└── uwsgi_temp                             # 临时目录

2.1.1 nginx默认路径

#  Nginx配置路径(生产环境部署在了/usr/local/nginx/下 )
/etc/nginx/

#  PID目录
/var/run/[nginx.pid](https://www.centos.bz/tag/nginx-pid/)

#  错误日志
/var/log/nginx/[error](https://www.centos.bz/tag/error/).log

#  访问日志
/var/log/nginx/access.log

#  默认站点目录
/usr/share/nginx/html

2.1.2 nginx.conf详解

user  probe;	# 运行用户
worker_processes  4;   # 启动进程,通常设置成和cpu的数量相等

# 全局错误日志及PID文件
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

# 工作模式及连接数上限
events {
    use   epoll;   # epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;   #  单个后台worker process进程的最大并发链接数
		keepalive_timeout 60;  # keepalived超时时间,单位是秒
}
# 设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    access_log    /var/log/nginx/access.log; # 设定日志格式
    # sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on;如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile  on;

	# 文件扩展名与文件类型映射表
    include mime.types;

    # 默认文件类型
    default_type application/octet-stream;

    # 默认编码
    charset utf-8;

    stream {
        upstream udp-cluster {
            fair;
            server 10.126.8.17:514 type=udp;
            server 10.126.8.41:514 type=udp;
        }
        server {
            listen 514 udp;
            proxy_connect_timeout 5s;  # 与被代理服务器建立连接的超时时间为5s
            proxy_timeout 10s;	# 获取被代理服务器的响应最大超时时间为10s
            proxy_next_upstream on;	# 当被代理的服务器返回错误或超时时,将未返回响应的客户端连接请求传递给upstream中的下一个服务器
            proxy_next_upstream_tries 3;   # 转发尝试请求最多3次
            proxy_next_upstream_timeout 10s;    # 总尝试超时时间为10s
            proxy_pass udp-cluster;   # 调用集群服务器
            proxy_socket_keepalive on;  # 开启SO_KEEPALIVE选项进行心跳检测
            proxy_bind $remote_addr transparent;
        }
    }
}

2.1.3 upstream分配方式

nginx的upstream支持5种分配方式,如下👇(其中,前3种为nginx原生支持的分配方式,后两种为第三方支持的分配方式):

2.1.3.1 轮询

轮询是upstream的默认分配方式,即每个请求按照实际顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。

upstream backend {
    server 192.168.1.101:514 type=udp;
    server 192.168.1.102:514 type=udp;
    server 192.168.1.103:514 type=udp;
}
2.1.3.2 weight权重

轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。

upstream backend {
    server 192.168.1.101 weight=1;
    server 192.168.1.102 weight=2;
    server 192.168.1.103 weight=3;
}
2.1.3.3 ip_hash

每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。

upstream backend {
    ip_hash;
    server 192.168.1.101:7777;
    server 192.168.1.102:8888;
    server 192.168.1.103:9999;
}
2.1.3.4 fair

fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。

upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
    fair;
}
2.1.3.5 url_hash

与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。

upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
    hash $request_uri;
    hash_method crc32;
}

其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。

2.1.4 server参数详解

# 与被代理服务器建立连接的超时时间为5s
proxy_connect_timeout 5s;

# 获取被代理服务器的响应最大超时时间为10s
proxy_timeout 10s;

# 当被代理的服务器返回错误或超时时,将未返回响应的客户端连接请求传递给upstream中的下一个服务器
proxy_next_upstream on;

# 转发尝试请求最多3次
proxy_next_upstream_tries 3;

# 总尝试超时时间为10s
proxy_next_upstream_timeout 10s;

# 调用集群服务器
proxy_pass udp-cluster;

# 开启SO_KEEPALIVE选项进行心跳检测
proxy_socket_keepalive on;

2.2 基础命令如下👇

/usr/local/nginx/sbin/nginx  # 启动nginx

/usr/local/nginx/sbin/nginx -s stop # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

/usr/local/nginx/sbin/nginx -s quit # 平稳关闭Nginx,保存相关信息,有安排的结束web服务。

# 重启nginx(因改变了Nginx相关配置,需要重新加载配置而重载)
/usr/local/nginx/sbin/nginx -s reload 

/usr/local/nginx/sbin/nginx -s reopen # 重新打开日志文件

/usr/local/nginx/sbin/nginx -c filename # 为 Nginx 指定一个配置文件,来代替缺省的。 

# 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。 
/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -v #  显示 nginx 的版本。

/usr/local/nginx/sbin/nginx -V #  显示 nginx 的版本,编译器版本和配置参数

三、开始搭建nginx

1.1 环境检查(nginx1、nginx2都要操作)

1.1.1 关闭selinux

配置 nginx前需要检查selinux是否关闭

# 查看 selinux状态
getenforce

# 关闭selinux
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled

#  临时关闭selinux
setenforce 0

1.1.2 创建相关用户

groupadd probe

useradd -g probe probe

1.2 修改linux内核参数(nginx1、nginx2都要操作)

# 查看内核限制
ulimit -a

#  修改内核限制(临时)
ulimit -n 65535

#  永久规则,修改限制,重启后生效,所以临时限制也要做
vim /etc/security/limits.conf
# 用户或组 软限制或硬限制 项目 值
* soft nofile 65535
* hard nofile 65535

1.3 安装所需依赖(nginx1、nginx2都要操作 )

yum install -y gcc pcre pcre-devel openssl openssl-devel

1.4 安装 nginx(nginx1、nginx2都要操作 )

#  1、解压tar包
tar -xf nginx-1.22.1.tar.gz -C /home/zzitcj/

# 2、创建程序相关目录
mkdir /usr/local/nginx


#  3、创建相关数据目录
mkdir -p /usr/local/nginx/log

mkdir -p /usr/local/nginx/run

# 4、编译
cd /home/zzitcj/nginx-1.22.1

# prefix指定安装目录,user、group指定用户和用户组,--with-http_ssl_module支持加密功能,--with-stream安装stream模块,--with-http_stub_status_module开启模块功能,用于后续nginx监控
./configure --prefix=/usr/local/nginx --user=probe --group=probe --pid-path=/usr/local/nginx/run/nginx.pid --with-http_ssl_module --with-stream --with-http_stub_status_module --with-http_gzip_static_module

make && make install

1.5 配置nginx.conf(nginx1、nginx2都要操作 )

user  probe;
worker_processes  4;

error_log  /usr/local/nginx/log/error.log;
pid        /usr/local/nginx/run/nginx.pid;

events {
    use   epoll;
    worker_connections  1024;
}

stream {
    upstream udp-syslog-cluster-10514 {
        server 10.126.8.17:11514 ;
        server 10.126.8.41:11514 ;
    }
    server {
        listen 10514 udp;
        proxy_connect_timeout 5s;
        proxy_timeout 10s;
        proxy_next_upstream on;
        proxy_next_upstream_tries 3;
        proxy_next_upstream_timeout 10s;
        proxy_pass udp-syslog-cluster-10514;
        proxy_socket_keepalive on;
    }
    upstream udp-syslog-cluster-10519 {
        server 10.126.8.17:10519 ;
        server 10.126.8.41:10519 ;
    }
    server {
        listen 10519 udp;
        proxy_connect_timeout 5s;
        proxy_timeout 10s;
        proxy_next_upstream on;
        proxy_next_upstream_tries 3;
        proxy_next_upstream_timeout 10s;
        proxy_pass udp-syslog-cluster-10519;
        proxy_socket_keepalive on;
    }
}
http {
    access_log    /usr/local/nginx/log/access.log;
    charset utf-8;
}

1.6 配置systemctl管理nginx服务

vim /usr/lib/systemd/system/nginx_TrapSyslog.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
User=probe
Group=probe
PIDFile=/usr/local/nginx/run/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

1.7 检查配置文件是否规范无报错

/usr/local/nginx/sbin/nginx -t

1.8 修改数据目录权限并启动服务

1.8.1 修改数据目录权限

chown -R probe.probe /usr/local/nginx

1.8.2 启动服务

# 加载 
systemctl daemon-reload

# 配置开机自启并启动
systemctl enable --now nginx_TrapSyslog.service

#  开启
systemctl status nginx_TrapSyslog.service

四、搭建keepalived

1.1 keepalived(2台同样的操作)

1.1.1 上传源码包至要部署程序的采集机,进行程序部署

# 上传源码包至要部署程序的采集机
scp -r keepalived-2.2.7.tar.gz root@10.126.8.17:~/

1.1.2 配置依赖环境与源码安装keepalived,安装版本2.2.7

# 安装依赖包
yum -y install gcc openssl-devel libnl libnl-devel libnfnetlink-devel

# 解压源码包
tar -xf /home/zzitcj/keepalived-2.2.7.tar.gz -C /home/zzitcj/

cd /home/zzitcj/keepalived-2.2.7

# 配置Makefile,指向安装目录/usr/local/keepalived
./configure --prefix=/usr/local/keepalived --with-init=systemd --with-systemdsystemunitdir=/usr/lib/systemd/system

# 编译并安装
make && make install

chown -R probe.probe /usr/local/keepalived

1.1.3 修改启动参数

sed -i 's@KEEPALIVED_OPTIONS=.*@KEEPALIVED_OPTIONS="-f /usr/local/keepalived/etc/keepalived/keepalived.conf -p /usr/local/keepalived/temp/keepalived.pid -D"@' /usr/local/keepalived/etc/sysconfig/keepalived

1.2 修改keepalived配置

1.2.1 master

1.2.1.1 编写keepalived.conf
vim /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
  router_id HOSTNAME
  vrrp_iptables
  vrrp_skip_check_adv_addr
  vrrp_strict
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script check_nginx_alived {
  script "/usr/local/keepalived/bin/nginx_check.sh"
  interval 20
  fall 3    # require 3 failures for KO
}
vrrp_instance VI_1 {
  state MASTER
  interface bond1
  virtual_router_id 51
  priority 100
  advert_int 1
  nopreempt
  authentication {
    auth_type PASS
    auth_pass Ng1NXCLUSTER
  }
  track_script {
    check_nginx_alived
  }
  virtual_ipaddress {
    vipaddress
  }
}
1.2.1.2 编写nginx_check.sh
vim /usr/local/keepalived/bin/nginx_check.sh
#!/bin/bash
# Author: hu.xiao
# Date: 2023.03.14
# Last_editdate: 2023.03.14
# Descrition: check nginx service status
check_log="/usr/local/nginx/log/nginx_check-`date +%Y-%m-%d-%H%M`.log"
> ${check_log}

pid_file="/usr/local/nginx/run/nginx.pid"

nginx_system_status=`systemctl status nginx_TrapSyslog.service  | grep Active | grep running | wc -l`

if  [ [ ${nginx_system_status} == 1] && [ -f ${pid_file} ] ];then
	echo -e "`date +%Y-%m-%d-%H%M`:  nginx服务为健康状态." >> ${check_log}
	exit 0
else
	echo -e "`date +%Y-%m-%d-%H%M`:  nginx服务异常,连续3次异常Keepliaved将发生切换 ." >> ${check_log}
	exit 1
fi

1.2.2 slave

1.2.2.1 编写keepalived.conf
vim /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
  router_id HOSTNAME
  vrrp_iptables
  vrrp_skip_check_adv_addr
  vrrp_strict
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script check_nginx_alived {
  script "/usr/local/keepalived/bin/nginx_check.sh"
  interval 20
  fall 3    # require 3 failures for KO
}
vrrp_instance VI_1 {
  state BACKUP
  interface bond1
  virtual_router_id 51
  priority 50
  advert_int 1
  nopreempt
  authentication {
    auth_type PASS
    auth_pass Ng1NXCLUSTER
  }
  track_script {
    check_nginx_alived
  }
  virtual_ipaddress {
    vipaddress
  }
}
1.2.2.2 编写nginx_check.sh
vim /usr/local/keepalived/bin/nginx_check.sh

#!/bin/bash
# Author: hu.xiao
# Date: 2023.03.14
# Last_editdate: 2023.03.14
# Descrition: check nginx service status
check_log="/usr/local/nginx/log/nginx_check-`date +%Y-%m-%d-%H%M`.log"
> ${check_log}

pid_file="/usr/local/nginx/run/nginx.pid"

nginx_system_status=`systemctl status nginx_TrapSyslog.service  | grep Active | grep running | wc -l`

if  [ [ ${nginx_system_status} == 1] && [ -f ${pid_file} ] ];then
	echo -e "`date +%Y-%m-%d-%H%M`:  nginx服务为健康状态." >> ${check_log}
	exit 0
else
	echo -e "`date +%Y-%m-%d-%H%M`:  nginx服务异常,连续3次异常Keepliaved将发生切换 ." >> ${check_log}
	exit 1
fi

1.2.3 修改2台主机的 keepalived配置文件 route_id与vip

# 1、修改hostname
sed -i 's/HOSTNAME/'${HOSTNAME}'/g'  /usr/local/keepalived/etc/keepalived/keepalived.conf

# 2、修改vip
sed -i 's/vipaddress/10.126.8.17/g'  /usr/local/keepalived/etc/keepalived/keepalived.conf

1.3 创建依赖目录并创建软连接 👇

mkdir /usr/local/keepalived/temp/

mkdir /etc/keepalived

ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/keepalived

keepalived -t
#附加:
#+ keepalived -t 可以检查配置文件的语法,默认检查的是/etc/keepalived/keepalived.conf
#+ 所以,我这里配置了一个软连接。

1.4 修改启动文件 keepalived.service

vim /usr/lib/systemd/system/keepalived.service

[Unit]
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target

[Service]
Type=forking
User=probe
Group=probe
PIDFile=/usr/local/keepalived/temp/keepalived.pid
KillMode=control-group
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

1.5 firewalld开启组播通信(注意按照网卡开通,此处是bond1)

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface bond1 --protocol vrrp -j ACCEPT

firewall-cmd --permanent --zone=public --add-port=16162/udp
firewall-cmd --permanent --zone=public --add-port=18162/udp

firewall-cmd --reload

firewall-cmd --list-all

1.6启动服务

1.6.1 添加脚本执行权限

chmod 755 /usr/local/keepalived/bin/*.sh

1.6.2 设置开机自启动并启动服务

chown -R probe.probe /usr/local/keepalived

systemctl daemon-reload

# 开机自启动
systemctl enable --now  keepalived

# 启动keepalived服务(由于咱们配置的是不抢占模式,注意需先停止所有节点的keepalived,然后优先启动master节点的keepalived服务)
systemctl restart keepalived

systemctl stop keepalived

systemctl start keepalived

systemctl status keepalived

五、添加告警自监控

此处文档只介绍了本次高可用改造使用程序的 监控步骤,实例的监控方式按照之前端口探测的方式进行监控

1.1 编写监控脚本

1.1.1 nginx监控脚本

vim /home/zabbix_scripts/nginx_system_status-check.sh

#!/bin/bash
# Author: hu.xiao
# Date: 2023.03.14
# Last_editdate: 2023.03.14
# Descrition: check nginx service status
status=$1

pid_file="/usr/local/nginx/run/nginx.pid"
nginx_system_status=$(systemctl status nginx_TrapSyslog |awk '{if (NR==3){print$2}}')
if [[ ${nginx_system_status} == $status ]  && [ -f ${pid_file} ]];then
    echo "1"
else
    echo "0"
fi

1.1.2 keepalived监控脚本

vim /home/zabbix_scripts/keepalived_system_status-check.sh

#!/bin/bash
# Author: hu.xiao
# Date: 2023.03.14
# Last_editdate: 2023.03.14
# Descrition: check keepalived  service status
status=$1

pid_file="/usr/local/keepalived/temp/keepalived.pid"
keepalived_system_status=$(systemctl status keepalived |awk '{if (NR==3){print$2}}')
if [[ ${keepalived_system_status} == $status ]  && [ -f ${pid_file} ]];then
    echo "1"
else
    echo "0"
fi

1.1.3 vip存活探测监控

vim /home/zabbix_scripts/keepalived_vip-check.sh

#!/bin/bash
# Author: hu.xiao
# Date: 2023.03.14
# Last_editdate: 2023.03.14
# Descrition: check VIP address status
IP=$1

if [ `ip a s | grep $IP | wc -l ` -eq 1 ];then
    echo "1"
else
    echo "0"
fi

1.2 配置zabbix

1.2.1 开启自定义监控

vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1
Include=/etc/zabbix/etc/zabbix_agentd.conf.d/*.conf

1.2.2 配置自定义监控参数

可以写在一个conf文件中,也可以拆开写;个人习惯以及推荐拆开写,遇到问题好排查

1.2.2.1 keepalived_system_status-check.conf
UserParameter=keepalived_system_status-check[*],/home/zabbix_scripts/keepalived_system_status-check.sh $1
1.2.2.2 nginx_system_status-check.conf
UserParameter=nginx_system_status-check[*],/home/zabbix_scripts/nginx_system_status-check.sh $1
1.2.2.3 keepalived_vip-check.conf
UserParameter=keepalived_vip-check[*],/home/zabbix_scripts/keepalived_vip-check.sh $1

1.2.3 重启zabbix

# 查看pid
ss -ntulp | grep 10050

#  kill -9 pid,杀死进程,此步一定确认好端口号
kill -9 $pid

#启动服务
zabbix_agentd

1.3 配置systemctl管理zabbix(附加)

由于现zabbix管理特别繁琐,特加此步,以便后续运维

注意:
欧拉以语雀文档安装的请不要再执行此操作;

vim /usr/lib/systemd/system/zabbix_agentd.service

[Unit]
Description=Zabbix Agent
After=syslog.target network.target network-online.target
Wants=network.target network-online.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
RemainAfterExit=yes
PIDFile=/var/run/zabbix/zabbix_agentd.pid

[Install]
WantedBy=default.target

1.3.1 systemctl管理命令

systemctl daemon-reload

# 设置开机自启并启动zabbix_agentd
systemctl enable --now zabbix_agentd

# 启动zabbix_agentd
systemctl start zabbix_agentd

# 停止 zabbix_agentd
systemctl stop zabbix_agentd

# 查看服务状态
systemctl status zabbix_agentd

1.4 页面添加监控

1.4.1 定义监控模板

添加好监控项、触发器规则、图形

1.4.2 关联业务主机

1.4.3 添加告警动作

短信告警并尝试自恢复业务

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强弟儿insights

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值