記事のディレクトリ
実験環境
ホスト名 | IP | サービス |
---|---|---|
サーバー1 | 172.25.2.1 | 塩マスター |
SERVER2 | 172.25.2.2 | 塩手先、HTTPD |
server3の | 172.25.2.3 | 塩手先、nginxの |
SERVER4 | 172.25.2.4 | 塩手先、haproxy、keepalivedの |
server5 | 172.25.2.5 | 塩手先、haproxy、keepalivedの |
1、keepalivedの - Haproxy基本的な考え方
2、keepalivedの
[root@server1 salt]# cd /srv/salt
[root@server1 salt]# mkdir keepalived
[root@server1 keepalived]# mkdir file #配置文件和软件包存放目录
2.1 keepalivedのインストールスクリプト:install.sls
/mnt/libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm:
file.managed: #依赖性,镜像中没有,因此需要手动安装
- source: salt://keepalived/file/libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
keepalived-install:
pkg.installed: #依赖性
- pkgs:
- gcc
- openssl-devel
- libnl-devel
file.managed: #keepalived的安装包
- name: /mnt/keepalived-2.0.6.tar.gz
- source: salt://keepalived/file/keepalived-2.0.6.tar.gz
cmd.run:
- name: cd /mnt && tar zxf keepalived-2.0.6.tar.gz && yum install -y libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm && cd keepalived-2.0.6 && ./configure --prefix=/usr/local/keepalived --with-init=SYSV &> /dev/null && make &> /dev/null && make install &> /dev/null
- create: /usr/local/keepalived #如果此目录存在则不进行安装
2.2 keepalivedの起動スクリプト:service.sls
include:
- keepalived.install #包含了keepalived的安装脚本,实现一键部署
/etc/keepalived:
file.directory:
- user: root
- group: root
- mode: 644
- makedirs: True
/etc/keepalived/keepalived.conf:
file.managed: #文件管理
- source: salt://keepalived/file/keepalived.conf
- mode: 644
- template: jinja #使用了jinja模块
- context:
STATE: {{ pillar['state'] }} #使用了pillar定义变量
PRIORITY: {{ pillar['priority'] }}
keepalived-service:
service.running:
- enable: keepalived
- name: keepalived
- reload: True
- watch:
- file: /etc/keepalived/keepalived.conf
2.3 keepalivedの関連文書およびパッケージ
keepalivedのプロフィール:keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_haproxy {
script "/opt/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state {{ STATE }} #pillar值
interface eth0
virtual_router_id 51
priority {{ PRIORITY }} #pillar值
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.2.100
}
track_script {
check_haproxy
}
}
3、haproxy
3.1 haproxyインストールスクリプト:install.sls
3.2 haproxyサービススクリプト:service.sls
3.3 haproxyプロフィール
プロファイルhaproxy.cfgを変更します。
4、アパッチ
4.1 Apacheのインストールスクリプト:install.sls
5、nginxの
5.1 nginxのインストールスクリプト:install.sls
5.2 nginxのサービススクリプト:service.sls
5.3 nginxの関連する構成ファイル
柱を使用するための6、keepalivedの必要性
vimの/srv/pillar/web/install.sls
{% if grains['fqdn'] == 'server4' %}
state: MASTER
priority: 100
{% elif grains['fqdn'] == 'server5' %}
state: BACKUP
priority: 50
{% endif %}
vimの柱/ top.sls
base:
'*':
- web.install
7、グローバルプッシュスクリプト
base:
'server4':
- haproxy.service
- keepalived.service
'server5':
- haproxy.service
- keepalived.service
'server2':
- apache.install
'server3':
- nginx.service
8、業績