概述:
之前我们所介绍过了很多实用的服务,有负载均衡类的,web服务类的,数据库类的等等,这些服务有的配置容易,有的配置困难,那我们现在设想一下在生成环境中,有上百台,甚至上千台服务器的情况下,难道要我们去挨个去配置每一台服务器吗,这是无法想象的,所以有了saltstack这类自动化运维工具的出现,帮助我们高效快速的部署服务。
线上服务拓扑
这次的拓扑基本上已经可以胜任一个相当活跃的服务的后端架构了,但是我们一般没有这么多机器,就算是用虚拟机资源也很有可能不够,为了能在一台机器上完成此架构,我们决定做如下分配。
haprxoy1:
cpu:1
ram:512MB
硬盘:20GB
运行服务:haproxy+keepalived+salt_master
ip:172.25.3.101
haproxy2:
cpu:1
ram:512MB
硬盘:20GB
运行服务:haproxy+keepalived+salt_minion
ip:172.25.3.102
lnmp1:
cpu:1
ram:1024MB
硬盘:20GB
运行服务:nginx+php_fpm+memchached+mysql_master+salt_minion
ip:172.25.3.103
lnmp2:
cpu1:
ram:1024MB
硬盘:20GB
运行服务:nginx+php_fpm+memcached+mysql_slave+salt_minion
ip:172.25.3.104
一.saltstack配置
我们先简要讲解下salt的安装配置与使用,这部分涉及的机器与上面拓扑图中的无关
salt1.mo.com : 172.25.3.100
salt2.mo.com:172.25.3.101
1.配置host文件
/etc/hosts
172.25.3.100 salt1.mo.com
172.25.3.101 salt2.mo.com
修改hostname
salt1:
[root@salt1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=salt1.mo.com
salt2:
[root@salt2 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=salt2.mo.com
2.安装
salt1相当于salt的服务端,我们需要安装salt-master与salt-minion,而salt2相当于salt客户端,在之后的集群部署中,一般salt服务端只有一个,但是客户端可以有很多,服务端与客户端通信,从完成相关配置文件,软件包的配置与部署。
由于我们的机器不能与外网连接,所以我将saltstack需要的rpm包全下载了下来制作成一个yum源在172.25.3.250这台机器上。所以我们需要部署salt的机器上的yum的配置如下。
[salt]
name=saltstack_soft
baseurl=ftp://172.25.3.250/pub/saltstack/saltstack/rhel6
enabled=1
gpgcheck=0
开始安装
salt1:
[root@salt1 ~]# yum install -y salt-master salt-minion
slat2:
[root@salt2 ~]# yum install -y salt-minion
3.配置
salt的配置也十分简单,master不用动,只需修改minion,使其知道自己的msater是谁即可。
vim /etc/salt/minion
master: 172.25.3.100
4.启动服务
salt1:
[root@salt1 ~]# /etc/init.d/salt-master status
salt-master (pid 1022) is running...
[root@salt1 ~]# /etc/init.d/salt-minion status
salt-minion:root:salt1.mo.com is running: 2332
salt2:
[root@salt2 ~]# /etc/init.d/salt-minion status
salt-minion:root:salt2.mo.com is running: 1355
5.配置认证
1).服务端与客户端认证连接
[root@salt1 ~]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
Rejected Keys:
直接输入salt-key查看现在key的情况,只有出现在Accepted Keys中的才是允许的客户端。
现在我们将自己salt1与salt2添加进去。
[root@salt1 master]# salt-key -a salt1.mo.com
The following keys are going to be accepted:
Unaccepted Keys:
salt1.mo.com
Proceed? [n/Y] y
Key for minion salt1.mo.com accepted.
[root@salt1 master]# salt-key -a salt2.mo.com
The following keys are going to be accepted:
Unaccepted Keys:
salt2.mo.com
Proceed? [n/Y] y
Key for minion salt2.mo.com accepted.
当出现如下报错时:
The key glob 'salt2.mo.com' does not match any unaccepted keys.
可能是你之前接收过该节点,却又删除了,请重启相应节点的salt-minion即可。
现在再查看一遍,key的接收情况
[root@salt1 master]# salt-key
Accepted Keys:
salt1.mo.com
salt2.mo.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已经签名的客户端。此时我们在客户端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件。
2)测试通讯是否正常
[root@salt1 master]# salt '*' test.ping
salt1.mo.com:
True
salt2.mo.com:
True
如上显示,证明通讯正常
3)远程执行命令测试
[root@salt1 master]# salt '*' cmd.run 'ip addr show'
salt2.mo.com:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:f0: