运维笔记43 使用saltstack配置完整线上服务(haproxy+keepalived,nginx+php+memcache,mysql主从)

概述:

之前我们所介绍过了很多实用的服务,有负载均衡类的,web服务类的,数据库类的等等,这些服务有的配置容易,有的配置困难,那我们现在设想一下在生成环境中,有上百台,甚至上千台服务器的情况下,难道要我们去挨个去配置每一台服务器吗,这是无法想象的,所以有了saltstack这类自动化运维工具的出现,帮助我们高效快速的部署服务。

线上服务拓扑

运维笔记43 使用saltstack配置完整线上服务(haproxy+keepalived,nginx+php+memcache,mysql主从)_第1张图片
这次的拓扑基本上已经可以胜任一个相当活跃的服务的后端架构了,但是我们一般没有这么多机器,就算是用虚拟机资源也很有可能不够,为了能在一台机器上完成此架构,我们决定做如下分配。
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:  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:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 52:54:00:f0:

你可能感兴趣的:(运维学习,mysql,数据库,web服务,php,saltstack)