A-A+
使用salt集中安装/配置/管理Tomcat
首先我们有2台机器需要部署tomcat如下:
[root@mysqlhost ~]# salt-key -L Accepted Keys: 192.168.137.154 192.168.137.155 Unaccepted Keys: Rejected Keys:
查看2台机器OS版本
[root@mysqlhost ~]# salt '*' cmd.run "uname -a;cat /etc/redhat-release"
192.168.137.155:
Linux mysqlhost 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
Red Hat Enterprise Linux Server release 6.0 (Santiago)
192.168.137.154:
Linux rhl6.0x64 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
Red Hat Enterprise Linux Server release 6.0 (Santiago)
查看2台机器磁盘信息
[root@mysqlhost ~]# salt '*' cmd.run "df -h"
192.168.137.154:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 36G 15G 20G 43% /
tmpfs 1.9G 204K 1.9G 1% /dev/shm
/dev/sda1 194M 30M 155M 16% /boot
192.168.137.155:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 36G 7.0G 27G 21% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 194M 30M 155M 16% /boot
我们在根目录下建一个tomcat目录
[root@mysqlhost ~]# salt '*' cmd.run "mkdir -p /tomcat"
192.168.137.155:
192.168.137.154:
将安装介质放到指定目录并解压
[root@mysqlhost ~]# salt-cp '*' /tmp/apache-tomcat-8.0.12.tar.gz /tomcat/apache-tomcat-8.0.12.tar.gz
{}
注意:在传输大文件时会超时报错
[root@mysqlhost ~]# salt '*' cmd.run "cd /tomcat;tar -zxvf apache-tomcat-8.0.12.tar.gz"
[root@mysqlhost ~]# salt '*' cmd.run "ls -ltr /tomcat"
192.168.137.155:
total 9004
-rw-r--r--. 1 root root 9212991 Sep 4 04:36 apache-tomcat-8.0.12.tar.gz
drwxr-xr-x. 9 root root 4096 Sep 4 04:37 apache-tomcat-8.0.12
192.168.137.154:
total 9004
-rw-r--r--. 1 root root 9212991 Aug 14 16:53 apache-tomcat-8.0.12.tar.gz
drwxr-xr-x. 9 root root 4096 Aug 14 16:55 apache-tomcat-8.0.12
配置环境变量
[root@mysqlhost ~]# salt '*' cmd.run "echo JAVA_HOME=/usr/java/jdk1.7.0_25 >> /etc/profile"
[root@mysqlhost ~]# salt '*' cmd.run "echo CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib >> /etc/profile"
[root@mysqlhost ~]# salt '*' cmd.run "echo PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin >> /etc/profile"
[root@mysqlhost ~]# salt '*' cmd.run "echo export PATH CLASSPATH JAVA_HOME >> /etc/profile"
[root@mysqlhost ~]# salt '*' cmd.run "source /etc/profile;tail -4 /etc/profile"
192.168.137.154:
JAVA_HOME=/usr/java/jdk1.7.0_25
CLASSPATH=/lib:/jre/lib
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/u01/mysql/bin:/root/bin:/bin:/jre/bin
export PATH CLASSPATH JAVA_HOME
192.168.137.155:
JAVA_HOME=/usr/java/jdk1.7.0_25
CLASSPATH=/lib:/jre/lib
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/u01/mysql/bin:/root/bin:/bin:/jre/bin
export PATH CLASSPATH JAVA_HOME
将tomcat添加到系统服务中
salt '*' cmd.run "cp /tomcat/apache-tomcat-8.0.12/bin/catalina.sh /etc/init.d/Tomcat" salt '*' cmd.run "sed -i '2i\#chkconfig: 2345 10 90' /etc/init.d/Tomcat" salt '*' cmd.run "sed -i '3i\#description:Tomcat service' /etc/init.d/Tomcat" salt '*' cmd.run "sed -i '4i\JAVA_HOME=/usr/java/jdk1.7.0_25' /etc/init.d/Tomcat" salt '*' cmd.run "sed -i '5i\CATALINA_HOME=/tomcat/apache-tomcat-8.0.12' /etc/init.d/Tomcat" salt '*' cmd.run "chkconfig --add Tomcat" salt '*' cmd.run "service Tomcat stop" salt '*' cmd.run "service Tomcat start"
获取当前运行tomcat的版本信息
[root@mysqlhost salt]# salt '*' cmd.run "service Tomcat version"
192.168.137.155:
Server version: Apache Tomcat/8.0.12
Server built: Aug 29 2014 03:46:23
Server number: 8.0.12.0
OS Name: Linux
OS Version: 2.6.32-71.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_25-b15
JVM Vendor: Oracle Corporation
192.168.137.154:
Server version: Apache Tomcat/8.0.12
Server built: Aug 29 2014 03:46:23
Server number: 8.0.12.0
OS Name: Linux
OS Version: 2.6.32-71.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_25-b15
JVM Vendor: Oracle Corporation
配置tomcat集中管理
[root@mysqlhost salt]# pwd
/srv/salt
[root@mysqlhost salt]# ls -l
total 12
drwxr-xr-x. 2 root root 4096 Sep 4 06:33 apache
drwxr-xr-x. 2 root root 4096 Sep 4 09:35 tomcat
-rw-r--r--. 1 root root 33 Sep 4 09:17 top.sls
[root@mysqlhost salt]# cat top.sls
base:
'*':
- tomcat.tomcat
[root@mysqlhost tomcat]# pwd
/srv/salt/tomcat
[root@mysqlhost tomcat]# ls -l
total 12
-rw-------. 1 root root 6373 Sep 4 08:51 server.xml
-rw-r--r--. 1 root root 272 Sep 4 09:30 tomcat.sls
[root@mysqlhost tomcat]# cat tomcat.sls
tomcat:
service:
- name: Tomcat
- running
- reload: True
- watch:
- file: /tomcat/apache-tomcat-8.0.12/conf/server.xml
/tomcat/apache-tomcat-8.0.12/conf/server.xml:
file:
- managed
- source: salt://tomcat/server.xml
- backup: minion
同步配置
[root@mysqlhost salt]# salt -E '192.168.137.15*' state.highstate
192.168.137.154:
----------
ID: /tomcat/apache-tomcat-8.0.12/conf/server.xml
Function: file.managed
Result: True
Comment: File /tomcat/apache-tomcat-8.0.12/conf/server.xml is in the correct state
Changes:
----------
ID: tomcat
Function: service.running
Name: Tomcat
Result: True
Comment: Started Service Tomcat
Changes:
----------
Tomcat:
True
Summary
------------
Succeeded: 2
Failed: 0
------------
Total: 2
192.168.137.155:
----------
ID: /tomcat/apache-tomcat-8.0.12/conf/server.xml
Function: file.managed
Result: True
Comment: File /tomcat/apache-tomcat-8.0.12/conf/server.xml is in the correct state
Changes:
----------
ID: tomcat
Function: service.running
Name: Tomcat
Result: True
Comment: Started Service Tomcat
Changes:
----------
Tomcat:
True
Summary
------------
Succeeded: 2
Failed: 0
------------
Total: 2
[root@mysqlhost salt]# salt '*' cmd.run "service Tomcat stop"
192.168.137.155:
192.168.137.154:
[root@mysqlhost salt]# salt '*' cmd.run "service Tomcat start"
192.168.137.155:
Tomcat started.
192.168.137.154:
Tomcat started.
测试集中管理
目前154的机器的tomcat运行在默认的8080端口
[root@mysqlhost tomcat]# telnet 192.168.137.154 8084 Trying 192.168.137.154... telnet: connect to address 192.168.137.154: Connection refused [root@mysqlhost tomcat]# telnet 192.168.137.154 8080 Trying 192.168.137.154... Connected to 192.168.137.154. Escape character is '^]'. ^] telnet> q Connection closed.
我们在集中管理端将tomcat配置文件server.xml的默认端口从8080改为8084
<Connector port="8084" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
同步我们的配置
[root@mysqlhost tomcat]# salt '192.168.137.154' state.highstate
192.168.137.154:
----------
ID: /tomcat/apache-tomcat-8.0.12/conf/server.xml
Function: file.managed
Result: True
Comment: File /tomcat/apache-tomcat-8.0.12/conf/server.xml updated
Changes:
----------
diff:
---
+++
@@ -65,7 +65,7 @@
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
- <Connector port="8080" protocol="HTTP/1.1"
+ <Connector port="8084" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
----------
ID: tomcat
Function: service.running
Name: Tomcat
Result: True
Comment: Started Service Tomcat
Changes:
----------
Tomcat:
True
Summary
------------
Succeeded: 2
Failed: 0
------------
Total: 2
重启tomcat并测试端口
[root@mysqlhost tomcat]# salt '192.168.137.154' cmd.run "service Tomcat stop"
192.168.137.154:
[root@mysqlhost tomcat]# salt '192.168.137.154' cmd.run "service Tomcat start"
192.168.137.154:
Tomcat started.
[root@mysqlhost tomcat]# telnet 192.168.137.154 8080
Trying 192.168.137.154...
telnet: connect to address 192.168.137.154: Connection refused
[root@mysqlhost tomcat]# telnet 192.168.137.154 8084
Trying 192.168.137.154...
Connected to 192.168.137.154.
Escape character is '^]'.
^]
telnet> q
Connection closed.
在154机器上可以找到修改前的配置文件
[root@rhl6 conf]# pwd /var/cache/salt/minion/file_backup/tomcat/apache-tomcat-8.0.12/conf [root@rhl6 conf]# ls -ltr total 32 -rw-r--r--. 1 root root 6373 Aug 14 21:47 server.xml_Thu_Aug_14_21:47:58_116759_2014 -rw-r--r--. 1 root root 6373 Aug 14 22:18 server.xml_Thu_Aug_14_22:18:40_820031_2014 -rw-r--r--. 1 root root 6373 Aug 14 22:24 server.xml_Thu_Aug_14_22:24:01_400928_2014 -rw-r--r--. 1 root root 6373 Aug 14 22:27 server.xml_Thu_Aug_14_22:27:43_710707_2014