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使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语