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脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%