middleware deployment

简介

该部署方式旨在提供通用标准组件的部署安装功能。使用ansible剧本完成各个组件的推送安装和初始化设置。

启停说明

部署严格按照要求,不得使用root用户
旨在全使用apps用户通过/apps/sh组件启停脚本进行启停操作
su - apps
或者在root下/bin/su - apps -c ‘具体命令来执行’

安装步骤

apps用户下
tar -xvzf middleware-teg-MMDD.tar.gz
cd middleware-teg-MMDD/
安装包需联系老师提供vx:GoodLifelp

ansible安装方式

yum install epel-release -y
yum install ansible -y
vi /etc/ansible/ansible.cfg
[defaults]
forks = 5 #执行时并发数
host_key_checking = False #不检测host key

检查初始化机器

硬集检查准备工作需提前安装ansible
1.编写ansible ,host文件
[host]
ip1
ip2
[all:vars]
ansible_ssh_pass=xxxxxxxxx
2.做免密
ssh-keygen -t rsa -P “” -f “/root/.ssh/id_rsa”
ansible -i hosts all -m authorized_key -a “user=root state=present key=’{{lookup(‘file’,’/root/.ssh/id_rsa.pub’)}}’”
3.硬集检查
检查项:
cpu、内存、磁盘容量、网卡等
初始化准备
解压push_init.zip,编辑host 安装包联系老师提供
[all]
ip组

[all:vars]
ansible_ssh_pass=”cdZV8Mft6YAmiT@”
ROOT_PASSWD=”cdZV8Mft6YAmiT@”
APPS_PASSWD=”cdZV8Mft6YAmiT@”
ADMIN_PASSWD=”cdZV8Mft6YAmiT@”
DEPLOYER_PASSWD=”cdZV8Mft6YAmiT@”
AIOPS_PASSWD=”cdZV8Mft6YAmiT@”
HARDWARE_PASSWD=”cdZV8Mft6YAmiT@”
SUPPORT_PASSWD=”cdZV8Mft6YAmiT@”
这里需要部署ntp服务器和yum源服务器,如若没有可暂时规避,规避方法自己琢磨。

#dns_server=[“”,””]
ntp_server=[“10.188.77.64”,”10.188.77.65”] (根据资源池修改)
yum_master=”10.188.35.57” (根据资源池修改)

#yum_slave=”XX.XXX.XX.XX”
os_version=el7.6

执行初始化
cd /root/lp/push_init

ansible-playbook -i host os.yml

##su - apps
** Haproxy组件安装 **
部署
ansible-playbook -i inventory/hosts.haproxy playbooks/haproxy.yml
启停
sudo /apps/sh/haproxy.sh (start|stop)
配置检查
sudo /apps/sh/haproxy.sh check
进程重载
sudo /apps/sh/haproxy.sh reload
进程检查
ps -ef|grep haproxy (10个进程)
端口检查
10000端口

##su - apps
** Keepalive组件安装 **
准备
vim inventory/hosts.keepalived
需要添加keepalived版本号
部署
ansible-playbook -i inventory/hosts.keepalived playbooks/keepalived.yml
启停
sudo /apps/sh/keepalived.sh (start|stop)
进程检查
sudo ps -ef|grep keepalive
需要配合LVS/IPVS负载
/apps/conf/keepalived/keepalived配置文件中去掉-P并重启生效

##su - apps
** JDK环境安装 **
部署
ansible-playbook -i inventory/hosts.jdk playbooks/jdk.yml
版本检查 (su -到对应用户下)
java -version
预期
java version “1.8.0_172”
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

##su - apps
** Zookeeper组件安装 **
ansible-playbook -i inventory/hosts.zookeeper playbooks/zookeeper.yml
启停
/apps/sh/zookeeper.sh (start|stop)
进程检查
ps -ef|grep zookeeper (一个进程)
端口检查
2181端口
9999端口
集群状态检查
各节点执行/apps/svr/zookeeper_2181/bin/zkServer.sh status
(一个leader,两个follower)

##su - apps
** Memcached组件安装 **
ansible-playbook -i inventory/hosts.memcached playbooks/memcached.yml
启停
/apps/sh/memcached.sh (start|stop) ##默认启停脚本中-c 65535 -m 20480 (适用于物理服务器)
进程检查
ps -ef|grep memcache (一个进程)
端口检查
11211端口
节点复用时
可在/apps/sh/memcached.sh中-m 20480 -c 65535后加上 -l 节点管理网地址,重启生效

##su - apps
** Nginx组件安装 **
ansible-playbook -i inventory/hosts.nginx playbooks/nginx.yml
启停
sudo /apps/sh/nginx_80.sh (start|stop)
进程检查
sudo ps -ef|grep nginx
端口检查
80端口

##su - apps
** Erlang环境安装 **
ansible-playbook -i inventory/hosts.erlang playbooks/erlang.yml
版本检查 (su -到对应用户下)
erl -version
预期
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.7

##su - apps
* Rabbitmq组件安装 **
前置:集群模式需先配置好节点/etc/hosts或使用DNS
单机 ansible-playbook -i inventory/hosts.rabbitmq playbooks/rabbitmq.yml
集群 ansible-playbook -i inventory/hosts.rabbitmq_cluster playbooks/rabbitmq_cluster.yml
启停
/apps/sh/rabbitmq.sh (start|stop)
检查集群状态rabbitmqctl cluster_status
检查节点状态rabbitmqctl status
进程检查
ps -ef|grep rabbitmq
端口检查
5672端口
15672端口
范例配置
添加MQ用户 rabbitmqctl add_user mcf PasSworD123@
设置管理员标签 rabbitmqctl set_user_tags mcf administrator
设置用户权限 rabbitmqctl set_permissions -p / mcf “.” “.” “.

设置镜像队列策略 rabbitmqctl set_policy ha-all ‘^(?!amq.).*’ ‘{“ha-mode”: “all”}’
查看用户 rabbitmqctl list_users
修改用户名对应密码 rabbitmqctl change_password Username ‘Newpassword’

##su - apps
** Tomcat组件安装 **
ansible-playbook -i inventory/hosts.tomcat playbooks/tomcat.yml
启停
/apps/sh/tomcat_8080.sh (start|stop)
进程检查
ps -ef|grep tomcat
端口检查
8080端口

##su - apps
* Activemq组件安装 ** (单活)
前置:完成数据库安装/数据库VIP配置/MQ数据库及用户创建授权
范例:登入数据库,执行:
create database activemq_mcf;
GRANT ALL PRIVILEGES ON activemq_mcf.
TO ‘mcf‘@’localhost’ IDENTIFIED BY ‘1qazEDC@WSX3edc’;
GRANT ALL PRIVILEGES ON activemq
mcf.* TO ‘mcf‘@’10.142.%’ IDENTIFIED BY ‘1qazEDC@WSX3edc’;
单机 ansible-playbook -i inventory/hosts.activemq playbooks/activemq.yml
集群 ansible-playbook -i inventory/hosts.activemq
cluster playbooks/activemq_cluster.yml
启停
/apps/sh/activemq.sh (start|stop)
进程检查
ps -ef|grep activemqi (进程集群三个节点都有)
端口检查(单活)
8161端口
61616端口
5672端口

##su - apps
** Redis组件安装 **
模式:单机、主从、哨兵、集群
前置:主从模式需要预先规划并部署Keepalive组件

单机:
ansible-playbook -i inventory/hosts.redis_standalone playbooks/redis.yml
启停:
/apps/sh/redis_6379.sh (start|stop|restart|status)
进程检查
ps -ef|grep redis (一个进程)
端口检查
6379端口
服务检查
/apps/svr/redis_6379/src/redis-cli -a ‘‘ PING(返回PONG)

哨兵:
ansible-playbook -i inventory/hosts.redis_sentinel playbooks/redis_sentinel.yml
进程检查
ps -ef|grep redis (两个进程)
端口检查
6379端口
26379端口
服务检查
三节点分别执行 /apps/svr/redis_6379/src/redis-cli -a ‘‘ PING(返回PONG)
三节点分别节点执行/apps/svr/redis_6379/src/redis-admin info replication
启停:
/apps/sh/redis_6379.sh (start|stop|restart|status)
注:当sentinel进程意外丢失,执行如下命令手动拉起
/apps/svr/redis_6379/src/redis-sentinel /apps/conf/redis_6379/sentinel.conf

主备:
ansible-playbook -i inventory/hosts.redis_standby playbooks/redis_standby.yml
进程检查
ps -ef|grep redis (一个进程)
端口检查
6379端口
服务检查
节点分别执行 /apps/svr/redis_6379/src/redis-cli -a ‘‘ PING(返回PONG)
节点分别节点执行/apps/svr/redis_6379/src/redis-admin info replication
VIP检查
主备切换 telnet 虚IP 6379

集群:
前提(root用户下):sysctl vm.overcommit_memory=1 && echo vm.overcommit_memory=1 >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local
sysctl net.core.somaxconn=2048 && echo “net.core.somaxconn=2048” >> /etc/sysctl.conf
部署(apps用户下)
ansible-playbook -i inventory/hosts.redis_cluster playbooks/redis_cluster.yml
进程检查
ps -ef|grep redis (两个进程)
端口检查
6379端口
6380端口
16379端口
16380端口
服务检查
/apps/svr/redis_6379/src/redis-admin cluster info
/apps/svr/redis_6379/src/redis-admin cluster nodes

##su - apps
** ftp组件安装 **
ansible-playbook -i inventory/hosts.ftp playbooks/vsftp.yml
端口检查
21端口