高级运维工程师讲述银河麒麟V10SP1服务器加固删除snmp服务引起keeplived莫名连带删除引起生产事故实战
一、核实操作系统信息
uname -a Linux localhost.localdomain 4.19.90-23.8.v2101.ky10.x86_64 #1 SMP Mon May 17 17:08:34 CST 2021 x86_64 x86_64 x86_64 GNU/Linux
cat /proc/version Linux version 4.19.90-23.8.v2101.ky10.x86_64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 17 17:08:34 CST 2021
cat /etc/os-release
NAME="Kylin Linux Advanced Server" VERSION="V10 (Tercel)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)" ANSI_COLOR="0;31"
二、事故描述(卸载snmp服务会连带删除keepalived服务)
作为运维工程师经常会对生产服务器进行安全漏洞加固,一般服务厂商、或者甲方信息安全中心提供一些安全的shell脚本,一般这种shell脚本都是收回权限,或者权限加固,或者删除某些漏洞的操作系统插件!笔者我,就最近由于服务器加固引起的生产事故总结一下,希望给大家一个惊醒!加固过程中,会引起生产事故!出了数据库事故,运维工程师躺枪背锅,笔者希望尽量避免,常在河边走,难免不湿鞋!笔者写这个文章,就是为了提前惊醒大家!避免跳坑,雷就在哪里,啥时候爆就是时间问题!如果出现数据库故障,可能对企业、产品的损失无法估量!
卸载snmp
yumremovenet-snmp-5.8-7.ky10.x86_64
yumremovenet-snmp-libs.x86_64
卸载snmp,会导致导致服务器上的keepalived服务暂停,配置文件丢失!
卸载snmp服务会连带删除keepalived服务
三、连带原因说明
(1)Keepalived 简介:
Keepalived 是一个用于实现高可用性(High Availability)的开源软件。它的主要功能是通过检测服务器的状态,来实现故障转移(Failover)和负载均衡。
Keepalived 主要通过虚拟路由冗余协议(VRRP)来实现高可用性。VRRP 可以将多台路由器组成一个虚拟路由器,其中一台路由器作为主路由器,其他路由器作为备份路由器。当主路由器出现故障时,备份路由器会自动接管主路由器的工作,从而保证网络的连续性和可靠性。
在实际应用中,Keepalived 通常会与其他软件(如 LVS、Nginx 等)配合使用,以实现更加完善的高可用性和负载均衡解决方案。例如,Keepalived 可以与 LVS 配合使用,实现对服务器的负载均衡和高可用性;也可以与 Nginx 配合使用,实现对 Web 服务器的高可用性和负载均衡。
Keepalived 的配置相对简单,只需要在主、备服务器上进行一些简单的配置,就可以实现高可用性和负载均衡的功能。同时,Keepalived 还提供了丰富的监控和报警功能,可以及时发现服务器的故障和异常情况,并通过邮件、短信等方式进行报警,以便管理员及时进行处理。
总的来说,Keepalived 是一个非常实用的高可用性软件,它可以帮助企业提高服务器的可靠性和稳定性,保证业务的连续性和正常运行。以下是一个简单的 Keepalived 配置示例:
global_defs { notification_email { acme@example.com } notification_email_from keepalived@example.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.200.16 } }
在上述示例中,我们定义了一个全局参数和一个 VRRP 实例。在全局参数中,我们设置了通知邮件的相关信息和 SMTP 服务器的地址。在 VRRP 实例中,我们设置了实例的状态、接口、虚拟路由器 ID、优先级、通告间隔、认证信息和虚拟 IP 地址。这只是一个简单的示例,实际的配置可能会根据您的具体需求进行调整。
Keepalived 是一个用于实现高可用性的软件,它可以通过多种方式来检测服务器的状态,其中之一就是使用 SNMP(Simple Network Management Protocol,简单网络管理协议)。
SNMP 可以用于监控网络设备和服务器的各种信息,如 CPU 利用率、内存使用情况、磁盘空间等。当 Keepalived 结合 SNMP 时,可以通过 SNMP 获取到这些监控信息,从而更准确地判断服务器的健康状况。
例如,如果通过 SNMP 监测到服务器的 CPU 利用率过高或者内存不足,Keepalived 可以根据预设的规则进行相应的操作,如将流量切换到其他备用服务器上,以保证服务的连续性。
另外,使用 SNMP 还可以实现对多个服务器的集中管理和监控,提高管理效率。通过一个统一的 SNMP 管理平台,可以同时查看和管理多个服务器的状态信息,方便管理员及时发现和解决问题。
总之,将 Keepalived 与 SNMP 结合使用,可以增强服务器的高可用性和可管理性,提高整个系统的稳定性和可靠性。
(2)Keepalived 为啥用到SNMP
Keepalived 是一个用于实现高可用性的软件,它可以通过多种方式来检测服务器的状态,其中之一就是使用 SNMP(Simple Network Management Protocol,简单网络管理协议)。
SNMP 可以用于监控网络设备和服务器的各种信息,如 CPU 利用率、内存使用情况、磁盘空间等。当 Keepalived 结合 SNMP 时,可以通过 SNMP 获取到这些监控信息,从而更准确地判断服务器的健康状况。
例如,如果通过 SNMP 监测到服务器的 CPU 利用率过高或者内存不足,Keepalived 可以根据预设的规则进行相应的操作,如将流量切换到其他备用服务器上,以保证服务的连续性。
另外,使用 SNMP 还可以实现对多个服务器的集中管理和监控,提高管理效率。通过一个统一的 SNMP 管理平台,可以同时查看和管理多个服务器的状态信息,方便管理员及时发现和解决问题。
总之,将 Keepalived 与 SNMP 结合使用,可以增强服务器的高可用性和可管理性,提高整个系统的稳定性和可靠性。
四、解决方法(误删重传、配置还原)
这是上面删除的命令!
卸载snmp yumremovenet-snmp-5.8-7.ky10.x86_64 yumremovenet-snmp-libs.x86_64
snmp服务还原!
yum install net-snmp-5.8-7.ky10.x86_64 yum install net-snmp-libs.x86_64
如果误删重装、配置还原!
1、实例环境说明
识别麒麟V10 操作系统信息
cat /etc/os-release
NAME="Kylin Linux Advanced Server" VERSION="V10 (Tercel)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)" ANSI_COLOR="0;31"
服务器名称 | IP | 角色 | 部署MYSQL数据库 |
---|---|---|---|
模拟 | 172.18.21.140 | 虚拟IP代理 | 无 |
物理机A | 172.18.21.146 | 真实IP,主MYSQL数据库 | nasen_146 |
物理机B | 172.18.21.148 | 真实IP,备MYSQL数据库 | nasen_148 |
2、服务器A安装部署详细步骤
步骤1:获取定制化安装包
安装包为麒麟V10 sp1特定版本,在互联网环境是搜不到的。Sp1跟SP2版本也略有不同。注意定制化版本。
步骤2:执行安装
rpm -ivh keepalived-2.0.20-5.ky10.x86_64.rpm
步骤3:配置keepalived配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface enp0s3 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.21.140 } } virtual_server 172.18.21.140 3306 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 172.18.21.146 3306 { weight 3 notify_down /etc/keepalived/restartKeepalived.sh TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } }
步骤4:补充一个脚本执行文件
cd /etc/keepalived
touch restartKeepalived.sh
vi restartKeepalived.sh
#!/bin/bash systemctl restart keepalived
chmod 777 restartKeepalived.sh
步骤5:执行启动命令
systemctl start keepalived
步骤6:是否正常启动
ip addr list
3、服务器B安装部署详细步骤
步骤1:获取定制化安装包
安装包为麒麟V10 sp1特定版本,在互联网环境是搜不到的。Sp1跟SP2版本也略有不同。注意定制化版本。
步骤2:执行安装
rpm -ivh keepalived-2.0.20-5.ky10.x86_64.rpm
步骤3:配置keepalived配置文件
vi /etc/keepalived/keepalived.conf
内容如下:
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface enp0s3 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.21.140 } } virtual_server 172.18.21.140 3306 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 172.18.21.148 3306 { weight 3 notify_down /etc/keepalived/restartKeepalived.sh TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } }
步骤4:补充一个脚本执行文件
cd /etc/keepalived
touch restartKeepalived.sh
vi restartKeepalived.sh
#!/bin/bash systemctl restart keepalived
chmod 777 restartKeepalived.sh
步骤5:执行启动命令
systemctl start keepalived
步骤6:是否正常启动
4、双活HA高可用验证
打开140默认指向146
模拟146数据库服务宕机
140自动转向148数据库服务
现在把146恢复
再把148数据库关闭模拟148宕机
140自动又跳回146服务器
双活HA高可用验证成功
五、笔者简介
笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!
笔者想说几句额外的:
某程删库事故的巨大影响值得警醒!!当然笔者在文章中惊提醒某些企业高管资本家,如果公司对一线的运维、DBA不够尊重、重视!如果裁员涉及到DBA或者高级运维,那将会是灾难噩梦的开始,如果因为裁员裁到大动脉,核心数据丢失事故给企业、产品、社会的影响巨大损失无法估量!某程删库的事故损失情况,可以去网上查查!核心数据丢失了,老板、企业家们高管很可能赔满全部身价!所以笔者倡导作为企业家、高管对于一线的运维、DBA要给予更多的爱与尊重与认可!愿社会更美好,愿每一个一线工程师都获得尊重与认可!