项目
目录
CMDB
1.实验目的
通过编写django框架的各个模块,实现对存活主机信息扫描,并以网页方式呈现给用户
2.实验步骤
settings.py
migarate至本地数据库
admin.py管理用户
views.py实现功能(探活、检查ssh端口、登录)
urls调用
html前端呈现
3.效果
登录页面,输入ip,给出版本信息
4.相关问题
https://blog.csdn.net/weixin_46833747/article/details/107768423
LVS-DR keepalived
1.实验目的
随着企业信息化的不断发展,需要面对越来越复杂的业务和越来越多样化的用户需求,例如单点故障问题、负载均衡问题。而 LVS+keepalived 构建的高可用负载均衡集群则完美解决了这些问题,提高了运维服务质量。
lvs实现负载均衡 keepalived实现lvs的高可用
2.实验环境
四台主机
server1、2:keepalived
server3、4:apache/nginx
3.步骤简述
1. 设置调度主机工作模式为 DR,调度算法为 rr
调度节点:
ip addr add 172.25.1.100/24 dev eth0
ipvsadm -A -t 172.25.1.100:80 -s rr
ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.3:80 -g
ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.4:80 -g
2. 为调度主机添加备份,并在两台主机上都安装 keepalived,编辑配置文件实现集群高可用
master、pri、vip、后端rs
3. 在真实主机中通过 arptables 将 RS 对 VIP 的响应屏蔽,此时可实现负载均衡,服务配置完毕
rs配置:
yum install -y arptables
arptables -A INPUT -d 172.25.1.100 -j DROP
arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.3
4.实现效果
调用后端服务器的负载均衡及健康检测
master端keepalived down掉 vip漂移至backup 自动顶上
5.相关问题
四层七层区别、lvs三种模式、十种调度算法
https://blog.csdn.net/weixin_46833747/article/details/107849336
nginx
tomcat+memcache会话保持
1.实验目的
同一客户端访问业务网站,经过调度器负载调度到达后端,不管选择的是那个后端,session ID都不变,都保存在两台或多台的memcached缓存中(负载冗余);以保持会话;客户端请求时nginx通过负载调度算法将请求调度至某一后端服务器;并把session存储到两台memcached中;客户端刷新(不换浏览器)时,请求换成另一个后端服务器响应时session ID保持不变;
2.实验环境
server1:nginx(调度器)
server2、server3:tomcat、jdk、memcache
3.实验步骤
1.环境:server1:nginx server2 : tomcat 实验完添加server3:tomcat
编写test.jsp实现用户登录信息页面。使得nginx将对jsp的访问代理至后端tomcat,只开启一个tomcat时,产生的数据会保存到本地。再实现nginx+tomcat负载均衡。
问题:当开启两个tomcat时,由于在负载均衡状态,受到nginx的调度,server2端提交数据后直接跳到了server3,与之前的建立的session断开了,再次回来数据就不存在了。
2.重新编译nginx,加入sticky模块,避免请求来回跳,信息丢失。此时只要访问的server2不挂,数据会一直保存。
问题:如果server2的tomcat挂掉,那么server2上的数据依然会丢失,因此我们需要memcache的加入实现session交叉存放,就是将访问server2中的tomcat上的数据存放在sever3中的memcache去,将访问server3中tomcat上的数据存放在server2中。
3.serve2、server3配置session管理器,将tomcat/conf/context.xml,n1改为n2,即将2中的缓存存至3中,反之亦然。开启memcache,并重启tomcat,此时多次登录仍会保存之前的登录信息,且当一个服务端挂掉时,另一个服务端会接管并保存之前的登录信息在页面中。
4.相关问题
mysql主从复制
1.实验目的
同步主从mysql的数据,使得主数据库出现问题时,可以切换到从数据库。
2.实验环境
server1:部署mysql8.0
server2:部署mysql8.0
3.实验步骤
master端:
(1) vim /etc/my.cnf 编辑主配置
log-bin=mysql-bin
server-id=1
(2)创建用户repl并授予复制权限
mysql> CREATE USER 'repl'@'192.168.43.%' IDENTIFIED BY 'My12345.';##创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.43.%';##对用户授权
(3)查看master状态并获取主节点上二进制文件名称和位置
mysql> SHOW MASTER STATUS;
slave端:
(1)配置从节点 vim /etc/my.cnf
server-id=2 ##从节点中的配置
(2) 在从节点slave上配置主节点master的信息,并开启复制:
mysql> change master to
-> master_host='172.25.11.2',
-> master_user='repl',
-> master_password='aaa@qq.com@0823',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=1200,
-> get_master_public_key=1;
mysql> START SLAVE;##开启复制
mysql> SHOW SLAVE STATUS\G ##查看slave状态
4.实验效果
此时在master端写入数据,slave端会同步并且可查看
5.相关问题
redis+mysql+gearmand
1.实验目的
用redis给mysql做前端缓存,并在mysql更新时用触发器与gearmand同步至redis
客户端通过nginx和php访问后端数据库时,先在redis这个数据库缓存中查找,看是否含有想要的数据,如果没有就去后端数据库查找,将查找到数据返回给客户端一份,另外在redis中缓存一份。下次如果访问相同的数据就直接去redis,缩短时间同时也减轻数据库的查找压力
2.实验环境
三台主机
server1:nginx、php、gearman 配置测试页面
server2:redis
server3:mysql、gearman-mysql-udf
注册udf函数插件及指定gearman服务器、定义触发器
3.实验效果
mysql的变更触发了触发器 trigger ,然后 json_map插件将变更的数据格式化为json格式便于处理,然后找到 mysql 的 gearman 和 udf 的插件 ,然后找到 gearman(job-server / server1)。 job-server 将任务分发给 worker。worker 与 php-gearman 和 php-redis 通信,将数据同步到server2上的 redis,redis 再发送到客户端,同时同步到本地缓存。
4.相关问题
zabbix监控NGINX
1.实验目的
用zabbix监控nginx的状态
2.实验环境
server1:部署zabbix -server、mysql、web mariadb
server2:zabbix-agent nginx
3.实验步骤
server2(被监控端):
1.安装zabbix-agent采集本机数据
2.部署nginx修改配置文件使得只有本机可以访问
3.用户自定义配置的目录中配置,获取活跃连接数
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active |awk '{print $3}'
server1(监控端):
下载simkai.ttf 避免乱码
在web页面添加server2监控项,添加图形 此时可监控到nginx信息
4.实验效果
5.相关问题
https://blog.csdn.net/weixin_46833747/article/details/108324555
Saltstack
Ansible部署负载均衡高可用集群
1.实验目的
通过ansible自动化部署haproxy+keepalived负载均衡高可用架构
2.实验环境
主机:配置epel源,安装ansible
server1、2:部署haproxy+keepalived
server3、4:部署nginx
3.实验步骤
1.主机ansible-galaxy init生成三个角色haproxy keepalived nginx
2.分别编写各角色下的task、vars、template、copy、handlers等模块
3.编写playbook完成推送
4.测试高可用架构