linux复盘:老款终极蛇皮怪之lnmp+tomcat+jdk+keepalived+lvs+zabbix+nfs

2023-10-13 18:20

本文主要是介绍linux复盘:老款终极蛇皮怪之lnmp+tomcat+jdk+keepalived+lvs+zabbix+nfs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

嗯这是篇有故事的博文回想起来历历在目

此次项目参与人数共计五人我荣幸担任组长项目顺利完成真心感谢大家

先分享一下九台机器项目构架图(后期有修改):

简单说明一下其中问题:

负载均衡keepalived配置文件第一次出现nginx配置错误(属于组员未理解配置需求)导致心跳测试失败

两台web服务器配置php编译时建议安装而不启动mysql原因配置时就心明眼亮啦

mysql单独服务器来跑,在配置完成后如何连接到nginx上,当然是在配置zrlog等网站配置时直接使用ip地址(数据库地址)就可以了

nfs这里问题就大了,nfs提供的是共享存储所以两台web上的数据可以直接从这里分享过去,就意味着不需要每台机器上重复安装,而是将需要的目录共享即可

准备工作:

主机名ip地址角色
xm01192.168.14.137Master LVS + Keepalived
xm02192.168.14.138Slave LVS + Keepalived
vip192.168.14.14vip
xm03192.168.14.139Nginx server1+tomcat+jdk
xm04192.168.14.140Nginx server2+tomcat+jdk
xm05192.168.14.141zabbix
xm06192.168.14.143mysql master
xm07192.168.14.144mysql slave
xm08192.168.14.145NFS共享存储服务器
xm09192.168.14.146NFS热备服务器

开干,首先关闭所有的firewalld(centos7)和selinux(iptables)

# systemctl stop firewalld# systemctl disable firewalld# iptables -F# setenforce 0 #临时关闭# vi /etc/selinux/config selinux=disabled reboot #永久关闭
xm01(Master LVS + Keepalived)192.168.14.137
[root@zhdy-01 ~]# yum install -y keepalived[root@zhdy-01 ~]# vim /etc/keepalived/keepalived.confvrrp_instance VI_1 {#备用服务器上为 BACKUPstate MASTER#绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下interface ens33virtual_router_id 51#备用服务器上为90priority 100advert_int 1authentication {auth_type PASSauth_pass zhangduanya}virtual_ipaddress {192.168.14.14}
}
virtual_server 192.168.14.14 80 {#(每隔10秒查询realserver状态)delay_loop 10#(lvs 算法)lb_algo wlc#(DR模式)lb_kind DR#(同一IP的连接60秒内被分配到同一台realserver)persistence_timeout 0#(用TCP协议检查realserver状态)protocol TCPreal_server 192.168.14.137 80 {#(权重)weight 100TCP_CHECK {#(10秒无响应超时)connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.14.138 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}
}[root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived后,需要开启端口转发[root@zhdy-01 ~]# systemctl start keepalived
xm02(Slave LVS + Keepalived)192.168.14.138
[root@zhdy-01 ~]# yum install -y keepalived[root@zhdy-01 ~]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 {#备用服务器上为 BACKUPstate BACKUP#绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下interface ens33virtual_router_id 51#备用服务器上为90priority 90advert_int 1authentication {auth_type PASSauth_pass zhangduanya}virtual_ipaddress {192.168.14.14}
}
virtual_server 192.168.14.14 80 {#(每隔10秒查询realserver状态)delay_loop 10#(lvs 算法)lb_algo wlc#(DR模式)lb_kind DR#(同一IP的连接60秒内被分配到同一台realserver)persistence_timeout 0#(用TCP协议检查realserver状态)protocol TCPreal_server 192.168.14.137 80 {#(权重)weight 100TCP_CHECK {#(10秒无响应超时)connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.14.138 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}
}[root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived后,需要开启端口转发[root@zhdy-01 ~]# systemctl start keepalived

xm03(Nginx server1+tomcat+jdk)192.168.14.139

#把vip绑定到lo上
vim /usr/local/sbin/lvs_rs.sh#! /bin/bash
vip=192.168.14.14
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce两台Real server分别执行脚本
# sh /usr/local/sbin/lvs_rs.sh
查看一下两台real server的router -n
# route -n
查看IP是否已经绑在lo卡上
# ip addr#安装nginx+php+mysql(编译使用)+tomcat+jdk

xm04(Nginx server1+tomcat+jdk)192.168.14.140

​#把vip绑定到lo上
vim /usr/local/sbin/lvs_rs.sh#! /bin/bash
vip=192.168.14.14
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce两台Real server分别执行脚本
# sh /usr/local/sbin/lvs_rs.sh
查看一下两台real server的router -n
# route -n
查看IP是否已经绑在lo卡上
# ip addr#安装nginx+php+mysql(编译使用)+tomcat+jdk
xm05(zabbix)192.168.14.141

没错zabbx需要注意的点来了,分为服务端和客户端,此处的客户端为mysql服务器和两个web服务器

然后安装到位后个性化的监控脚本这里不展示了,留下一篇来专门回忆

#下载yum源
[root@yb1 ~]# cd /usr/local/src
[root@yb1 src]#  
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#安装yum源
[root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
2.3 安装zabbix及其组件注意一定要安装好mysql(此过程会安装php和http服务)
[root@yb1 src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql#安装mysql
#下载yum源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
#安装yum源
rpm -ivh mysql-community-release-el7-5.noarch.rpm
#安装mysql
yum install -y mysql mysql-server mysql-devel#配置mysql
#修改配置文件
vi /etc/my.cnf
#在[mysqld]下添加:
character_set_server = utf8
#重启mysql
systemctl restart mysql
#登入mysql,配置
mysql -uroot
create database zabbix character set utf8;  //创建zabbix库,并设置字符集为utf-8
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbixpasswd';  //创建zabbix用户并设置密码,并登出mysql
#导入zabbix数据库
cd /usr/share/doc/zabbix-server-mysql-3.2.7  
gzip -d create.sql.gz  
mysql -uroot  zabbix < create.sql //将数据和结构导入zabbix数据库中#配置zabbix
vim /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1
#此处写zabbix所在机器的IP(生产环境中zabbix可能单独使用一天机器)
#该IP应该和数据库授权时指定的IP一致
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpasswd#web界面配置
#放行80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#浏览器访问并配置
http://192.168.14.141/zabbix

下面整理客户端配置

#环境
zabbixagent:192.168.14.139 web服务器
zabbixagent:192.168.14.140 web服务器
zabbixagent:192.168.14.143 mysql服务器主
zabbixagent:192.168.14.144 mysql服务器从#zabbixagent安装
#下载yum源
[root@yb1 ~]# cd /usr/local/src
[root@yb1 src]#  wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#安装yum源
[root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
#安装zabbix及其组件注意一定要安装好mysql(此过程会安装php和http服务)
[root@yb1 src]# yum install -y zabbix-agent #配置zabbix-agent
vim  /etc/zabbix/zabbix_agentd.conf 
#修改如下配置
Server=127.0.0.1修改为Server=192.168.14.141 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.14.141 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=zabbix-web //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
#启动zabbix客户端服务
systemctl start zabbix-agent
#加入开机启动
systemctl enable zabbix-agent#到这一步下来就是服务端的web端监控配置了,按照具体的的个性化需求配置
xm06(mysql主)192.168.14.143
xm07(mysql从)192.168.14.144

之前有总结,疑问直接摆上来,如果说mysql安装在一台独立的server,如何连接?之前都是安装在一台,如果分离那就直接使用ip地址喽(数据库主机)

这里针对zrlog来设置数据库,因为一个web上装了zrlog、discuz、WordPress三个服务,每个都要针对其设置数据库和权限

这里有个mysql+DRBD还没搞清楚让人很焦虑

xm08(NFS共享存储服务器)192.168.14.145

恩这里成短板了,也是谈问题安装不说了,nfs为什么出现,除了把相同的图片这种内容放到这台服务器上共享出去,还有个关键的地方,竟然被我忽视了,既然可以共享目录,那么zrlog和discuz这些的数据文件夹还有安装文件夹直接放到nfs上直接共享挂载,就不需要重复安装了也保证了负载均衡后数据的同步,其实同步是最关键的,第一次被分到web1上写下了一篇文章,然后数据库配置有问题就会导致下次登录被分配到web2上消失了,哈哈这可怎么行,所以就把这些全部共享出去,其他的还没想到,后面添加吧

xm09(NFS热备服务器)192.168.14.146

rsync+inotify实时同步备份数据,备份的是全构架中需要提供的所有数据,除了zabbix是自己的数据库为了安全考虑

先分享一篇文章:inotify+rsync实现实时同步部署

就先到这里了明天继续,哦对了马上过年啦,加油哈刚跟朋友聊天才明白自己的想法坚持就好

 

 

 

 

转载于:https://my.oschina.net/u/3655649/blog/1621124

这篇关于linux复盘:老款终极蛇皮怪之lnmp+tomcat+jdk+keepalived+lvs+zabbix+nfs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205058

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更