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换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu