1.nginx源码编译安装
[root@server6 salt]# mkdir nginx //在文件系统中创建nginx目录
[root@server6 salt]# cd nginx/
[root@server6 nginx]# mkdir files //用于储存安装包
[root@server6 nginx]# cd files/
[root@server6 files]# ls
nginx-1.14.0.tar.gz
[root@server6 nginx]# vim install.sls
nginx-install:
pkg.installed:
- pkgs:
- gcc
- openssl-devel
- pcre-devel
file.managed:
- source: salt://nginx/files/nginx-1.14.0.tar.gz //源地址
- name: /mnt/nginx-1.14.0.tar.gz //tar包存储地址
cmd.run: // 编译安装,每个动作中间用&&来连接
- name: cd /mnt/ && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --with-file-aio && make &> /dev/null && make install &> /dev/null
- creates: /usr/local/nginx //文件检测,若目的机中已存在这个目录,则说明已安装好,就不用再进行编译
推送:[root@server6 nginx]# salt server8 state.sls nginx.install
server8:
----------
ID: nginx-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 11:08:44.255343
Duration: 354.052 ms
Changes:
----------
ID: nginx-install
Function: file.managed
Name: /mnt/nginx-1.14.0.tar.gz
Result: True
Comment: File /mnt/nginx-1.14.0.tar.gz is in the correct state
Started: 11:08:44.610847
Duration: 52.621 ms
Changes:
----------
ID: nginx-install
Function: cmd.run
Name: cd /mnt/ && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --with-file-aio && make &> /dev/null && make install &> /dev/null
Result: True
Comment: /usr/local/nginx exists
Started: 11:08:44.664052
Duration: 0.34 ms
Changes:
Summary for server8
------------
Succeeded: 3
Failed: 0
------------
Total states run: 3
Total run time: 407.013 ms
2,nginx管理脚本,文件分离
1).再创建一个目录用于存储建立用户的sls文件。
[root@server6 salt]# mkdir users
[root@server6 salt]# cd users/
[root@server6 users]# vim user.sls
nginx-group:
group.present:
- name: nginx
- gid: 800
nginx-user:
user.present:
- name: nginx
- uid: 800
- gid: 800
- shell: /sbin/nologin //不允许交互
- createhome: False //不自动创建家目录
- home: /usr/local/nginx //指定家目录
[root@server6 nginx]# vim service.sls
include:
- users.user
- nginx.install
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf
nginx-service:
file.managed:
- source: salt://nginx/files/nginx
- name: /etc/init.d/nginx //启动文件地址
- mode: 755
service.running:
- name: nginx
- reload: True
- watch:
- file: /usr/local/nginx/conf/nginx.conf
[root@server6 files]# ls // 将nginx配置文件放置过来,并添加nginx启动脚本
nginx nginx-1.14.0.tar.gz nginx.conf
[root@server6 files]# vim nginx.conf
user nginx nginx;
推送:[root@server6 nginx]# salt server8 state.sls nginx.service
server8:
----------
ID: nginx-group
Function: group.present
Name: nginx
Result: True
Comment: Group nginx is present and up to date
Started: 11:10:05.696440
Duration: 1.548 ms
Changes:
----------
ID: nginx-user
Function: user.present
Name: nginx
Result: True
Comment: User nginx is present and up to date
Started: 11:10:05.698421
Duration: 15.069 ms
Changes:
----------
ID: nginx-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 11:10:06.067583
Duration: 357.7 ms
Changes:
----------
ID: nginx-install
Function: file.managed
Name: /mnt/nginx-1.14.0.tar.gz
Result: True
Comment: File /mnt/nginx-1.14.0.tar.gz is in the correct state
Started: 11:10:06.426721
Duration: 51.284 ms
Changes:
----------
ID: nginx-install
Function: cmd.run
Name: cd /mnt/ && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --with-file-aio && make &> /dev/null && make install &> /dev/null
Result: True
Comment: /usr/local/nginx exists
Started: 11:10:06.478582
Duration: 0.328 ms
Changes:
----------
ID: /usr/local/nginx/conf/nginx.conf
Function: file.managed
Result: True
Comment: File /usr/local/nginx/conf/nginx.conf is in the correct state
Started: 11:10:06.478989
Duration: 22.518 ms
Changes:
----------
ID: nginx-service
Function: file.managed
Name: /etc/init.d/nginx
Result: True
Comment: File /etc/init.d/nginx is in the correct state
Started: 11:10:06.501606
Duration: 212.775 ms
Changes:
----------
ID: nginx-service
Function: service.running
Name: nginx
Result: True
Comment: The service nginx is already running
Started: 11:10:06.715162
Duration: 25.261 ms
Changes:
Summary for server8
------------
Succeeded: 8
Failed: 0
------------
Total states run: 8
Total run time: 686.483 ms
server8查看端口:
2.Haproxy源码安装
1).添加负载均衡yum源
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.0.16/rhel6.5/LoadBalancer
gpgcheck=0
[root@server6 salt]# mkdir haproxy
[root@server6 salt]# cd haproxy/
[root@server6 haproxy]# mkdir files //存储源文件
[root@server6 files]# ls
haproxy-1.6.11.tar.gz
2).编写安装脚本文件
[root@server6 haproxy]# vim install.sls
haproxy-install:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel
file.managed:
- name: /mnt/haproxy-1.6.11.tar.gz
- source: salt://haproxy/files/haproxy-1.6.11.tar.gz
cmd.run:
- name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
- creates: /usr/local/haproxy
推送到server6
server6:
----------
ID: haproxy-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 11:50:05.452291
Duration: 366.061 ms
Changes:
----------
ID: haproxy-install
Function: file.managed
Name: /mnt/haproxy-1.6.11.tar.gz
Result: True
Comment: File /mnt/haproxy-1.6.11.tar.gz is in the correct state
Started: 11:50:05.819780
Duration: 66.385 ms
Changes:
----------
ID: haproxy-install
Function: cmd.run
Name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
Result: True
Comment: /usr/local/haproxy exists
Started: 11:50:05.886743
Duration: 0.326 ms
Changes:
Summary for server6
------------
Succeeded: 3
Failed: 0
------------
Total states run: 3
Total run time: 432.772 ms
3)将haproxy的启动脚本及配置文件传到fiels目录中
[root@server6 haproxy]# cd /mnt/haproxy-1.6.11/examples/
[root@server6 examples]# cp haproxy.init /srv/salt/haproxy/files/
[root@server6 examples]# cp content-sw-sample.cfg /srv/salt/haproxy/files/
[root@server6 files]# vim content-sw-sample.cfg
global
maxconn 10000
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200
gid 200
chroot /var/empty
daemon
defaults
mode http
log global
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
retries 2
option redispatch
timeout connect 5s
timeout server 30s
timeout queue 30s
fullconn 4000
stats uri /admin/stats
# The public 'www' address in the DMZ
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
default_backend dynamic
backend dynamic
balance roundrobin
fullconn 4000
server dynsrv1 172.25.0.123:80 check inter 1000
server dynsrv2 172.25.0.124:80 check inter 1000
4)建立用户:
[root@server6 users]# vim haproxy.sls
haproxy-group:
group.present:
- name: haproxy
- gid: 200
haproxy-user:
user.present:
- name: haproxy
- uid: 200
- gid: 200
- home: /usr/local/haproxy
- shell: /sbin/nologin
- createhome: False
推送
server6:
----------
ID: haproxy-group
Function: group.present
Name: haproxy
Result: True
Comment: New group haproxy created
Started: 12:09:33.112772
Duration: 714.504 ms
Changes:
----------
gid:
200
members:
name:
haproxy
passwd:
x
----------
ID: haproxy-user
Function: user.present
Name: haproxy
Result: True
Comment: New user haproxy created
Started: 12:09:33.827833
Duration: 763.474 ms
Changes:
----------
fullname:
gid:
200
groups:
- haproxy
home:
homephone:
name:
haproxy
passwd:
x
roomnumber:
shell:
/sbin/nologin
uid:
200
workphone:
Summary for server6
------------
Succeeded: 2 (changed=2)
Failed: 0
------------
Total states run: 2
Total run time: 1.478 s
[root@server6 users]# id haproxy
uid=200(haproxy) gid=200(haproxy) groups=200(haproxy)
5).编写脚本推送启动服务
[root@server6 haproxy]# vim service.sls
include:
- haproxy.install
- users.haproxy
/etc/haproxy/haproxy.cfg:
file.managed:
- source: salt://haproxy/files/haproxy.cfg
harpoxy-service:
file.managed:
- name: /etc/init.d/haproxy
- source: salt://haproxy/files/haproxy.init
- mode: 755
service.running:
- name: haproxy
- enable: True
- reload: True
- watch:
- file: /etc/haproxy/haproxy.cfg
再次编辑安装脚本
[root@server6 haproxy]# vim install.sls
haproxy-install:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel
file.managed:
- name: /mnt/haproxy-1.6.11.tar.gz
- source: salt://haproxy/files/haproxy-1.6.11.tar.gz
cmd.run:
- name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
- creates: /usr/local/haproxy
/etc/haproxy:
file.directory: //建立目录
- mode: 755
/usr/sbin/haproxy:
file.symlink: //软链接
- target: /usr/local/haproxy/sbin/haproxy
6)推送并测试
[root@server6 haproxy]# salt server6 state.sls haproxy.service
server6:
----------
ID: haproxy-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 13:37:25.381372
Duration: 363.378 ms
Changes:
----------
ID: haproxy-install
Function: file.managed
Name: /mnt/haproxy-1.6.11.tar.gz
Result: True
Comment: File /mnt/haproxy-1.6.11.tar.gz is in the correct state
Started: 13:37:25.746278
Duration: 66.097 ms
Changes:
----------
ID: haproxy-install
Function: cmd.run
Name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
Result: True
Comment: /usr/local/haproxy exists
Started: 13:37:25.812970
Duration: 0.324 ms
Changes:
----------
ID: /etc/haproxy
Function: file.directory
Result: True
Comment: Directory /etc/haproxy is in the correct state
Started: 13:37:25.813372
Duration: 0.392 ms
Changes:
----------
ID: /usr/sbin/haproxy
Function: file.symlink
Result: True
Comment: Symlink /usr/sbin/haproxy is present and owned by root:root
Started: 13:37:25.813841
Duration: 1.024 ms
Changes:
----------
ID: haproxy-group
Function: group.present
Name: haproxy
Result: True
Comment: Group haproxy is present and up to date
Started: 13:37:25.815168
Duration: 0.28 ms
Changes:
----------
ID: haproxy-user
Function: user.present
Name: haproxy
Result: True
Comment: User haproxy is present and up to date
Started: 13:37:25.815890
Duration: 0.684 ms
Changes:
----------
ID: /etc/haproxy/haproxy.cfg
Function: file.managed
Result: True
Comment: File /etc/haproxy/haproxy.cfg is in the correct state
Started: 13:37:25.816650
Duration: 24.5 ms
Changes:
----------
ID: harpoxy-service
Function: file.managed
Name: /etc/init.d/haproxy
Result: True
Comment: File /etc/init.d/haproxy is in the correct state
Started: 13:37:25.841263
Duration: 24.395 ms
Changes:
----------
ID: harpoxy-service
Function: service.running
Name: haproxy
Result: True
Comment: The service haproxy is already running
Started: 13:37:25.866334
Duration: 21.532 ms
Changes:
Summary for server6
-------------
Succeeded: 10
Failed: 0
-------------
Total states run: 10
Total run time: 502.606 ms
查看服务状态:
测试负载均衡
网页访问:http://172.25.0.122/ 并刷新:
7)一键推送
[root@server6 salt]# vim top.sls
base:
'server6':
- haproxy.service
'server7':
- httpd.service
'server8':
- nginx.service
[root@server6 salt]# salt '*' state.highstate
server7:
----------
ID: httpd
Function: pkg.installed
Result: True
Comment: Package httpd is already installed
Started: 13:51:03.510399
Duration: 416.677 ms
Changes:
----------
ID: php
Function: pkg.installed
Result: True
Comment: Package php is already installed
Started: 13:51:03.927230
Duration: 0.461 ms
Changes:
----------
ID: /etc/httpd/conf/httpd.conf
Function: file.managed
Result: True
Comment: File /etc/httpd/conf/httpd.conf is in the correct state
Started: 13:51:03.929816
Duration: 33.847 ms
Changes:
----------
ID: apache-service
Function: service.running
Name: httpd
Result: True
Comment: The service httpd is already running
Started: 13:51:03.963828
Duration: 22.168 ms
Changes:
Summary for server7
------------
Succeeded: 4
Failed: 0
------------
Total states run: 4
Total run time: 473.153 ms
server6:
----------
ID: haproxy-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 13:51:03.679766
Duration: 505.727 ms
Changes:
----------
ID: haproxy-install
Function: file.managed
Name: /mnt/haproxy-1.6.11.tar.gz
Result: True
Comment: File /mnt/haproxy-1.6.11.tar.gz is in the correct state
Started: 13:51:04.187029
Duration: 71.075 ms
Changes:
----------
ID: haproxy-install
Function: cmd.run
Name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
Result: True
Comment: /usr/local/haproxy exists
Started: 13:51:04.258786
Duration: 0.351 ms
Changes:
----------
ID: /etc/haproxy
Function: file.directory
Result: True
Comment: Directory /etc/haproxy is in the correct state
Started: 13:51:04.259244
Duration: 0.557 ms
Changes:
----------
ID: /usr/sbin/haproxy
Function: file.symlink
Result: True
Comment: Symlink /usr/sbin/haproxy is present and owned by root:root
Started: 13:51:04.259886
Duration: 1.293 ms
Changes:
----------
ID: haproxy-group
Function: group.present
Name: haproxy
Result: True
Comment: Group haproxy is present and up to date
Started: 13:51:04.261537
Duration: 0.312 ms
Changes:
----------
ID: haproxy-user
Function: user.present
Name: haproxy
Result: True
Comment: User haproxy is present and up to date
Started: 13:51:04.262380
Duration: 0.75 ms
Changes:
----------
ID: /etc/haproxy/haproxy.cfg
Function: file.managed
Result: True
Comment: File /etc/haproxy/haproxy.cfg is in the correct state
Started: 13:51:04.263223
Duration: 26.876 ms
Changes:
----------
ID: harpoxy-service
Function: file.managed
Name: /etc/init.d/haproxy
Result: True
Comment: File /etc/init.d/haproxy is in the correct state
Started: 13:51:04.290243
Duration: 41.293 ms
Changes:
----------
ID: harpoxy-service
Function: service.running
Name: haproxy
Result: True
Comment: The service haproxy is already running
Started: 13:51:04.332396
Duration: 25.958 ms
Changes:
Summary for server6
-------------
Succeeded: 10
Failed: 0
-------------
Total states run: 10
Total run time: 674.192 ms
server8:
----------
ID: nginx-group
Function: group.present
Name: nginx
Result: True
Comment: Group nginx is present and up to date
Started: 13:51:03.562579
Duration: 5.914 ms
Changes:
----------
ID: nginx-user
Function: user.present
Name: nginx
Result: True
Comment: User nginx is present and up to date
Started: 13:51:03.573122
Duration: 62.844 ms
Changes:
----------
ID: nginx-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 13:51:04.421423
Duration: 378.146 ms
Changes:
----------
ID: nginx-install
Function: file.managed
Name: /mnt/nginx-1.14.0.tar.gz
Result: True
Comment: File /mnt/nginx-1.14.0.tar.gz is in the correct state
Started: 13:51:04.801104
Duration: 60.205 ms
Changes:
----------
ID: nginx-install
Function: cmd.run
Name: cd /mnt/ && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-threads --with-http_ssl_module --with-http_stub_status_module --with-file-aio && make &> /dev/null && make install &> /dev/null
Result: True
Comment: /usr/local/nginx exists
Started: 13:51:04.862040
Duration: 0.362 ms
Changes:
----------
ID: /usr/local/nginx/conf/nginx.conf
Function: file.managed
Result: True
Comment: File /usr/local/nginx/conf/nginx.conf is in the correct state
Started: 13:51:04.862495
Duration: 27.228 ms
Changes:
----------
ID: nginx-service
Function: file.managed
Name: /etc/init.d/nginx
Result: True
Comment: File /etc/init.d/nginx is in the correct state
Started: 13:51:04.889842
Duration: 26.279 ms
Changes:
----------
ID: nginx-service
Function: service.running
Name: nginx
Result: True
Comment: The service nginx is already running
Started: 13:51:04.916874
Duration: 25.496 ms
Changes:
Summary for server8
------------
Succeeded: 8
Failed: 0
------------
Total states run: 8
Total run time: 586.474 ms
推送完成。