1. haproxy 和 keepalived
服务器ip:192.168.0.221和192.168.0.222
软件版本:
- HA-Proxy version 1.8.8-1ubuntu0.11 2020/06/22
- Keepalived v1.3.9 (10/21,2017)
此处使用apt命令安装:1
apt install haproxy keepalived
1.1 配置keepalived的vip
- 配置 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30- root@ha1:~# cp /usr/share/doc/keepalived/samples/keepalived.conf.vrrp /etc/keepalived/keepalived.conf 
 root@ha1:~# cat /etc/keepalived/keepalived.conf
 ! Configuration File for keepalived
 global_defs {
 notification_email {
 acassen
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.200.1
 smtp_connect_timeout 30
 router_id LVS_DEVEL
 }
 vrrp_instance VI_1 {
 state MASTER
 interface eth0
 garp_master_delay 10
 smtp_alert
 virtual_router_id 51
 priority 100
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.0.227 dev eth0 label eth0:1
 }
 }
- 重启和设置开机启动 - 1 
 2- root@ha2:~# systemctl restart keepalived 
 root@ha2:~# systemctl enable keepalived
- 将配置文件拷贝到另外一台服务器,修改相关配置文件,并重启相关服务。 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29- root@ha2:~# cat /etc/keepalived/keepalived.conf 
 ! Configuration File for keepalived
 global_defs {
 notification_email {
 acassen
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.200.1
 smtp_connect_timeout 30
 router_id LVS_DEVEL
 }
 vrrp_instance VI_1 {
 state BACKUP #设置为backup
 interface eth0
 garp_master_delay 10
 smtp_alert
 virtual_router_id 51
 priority 80 #调低优先级
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.0.227 dev eth0 label eth0:1
 }
 }
- 验证ip是否漂移,关闭主服务器测试,在backup服务器查看ip是否启动。 
1.2 配置haproxy
- 添加配置文件 - 1 
 2
 3
 4
 5
 6
 7- vim /etc/haproxy/haproxy.cfg 
 listen mykerenl-web-80
 bind 192.168.0.227:80
 mode http
 server 192.168.0.223 192.168.0.223:80 check inter 2s fall 3 rise 5
 server 192.168.0.224 192.168.0.224:80 check inter 2s fall 3 rise 5
- 修改内核参数 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- # 查看内核参数是否修改: 
 root@ha2:~# sysctl -a |grep nonlocal
 net.ipv4.ip_nonlocal_bind = 1 # 为1 ok
 sysctl: reading key "net.ipv6.conf.all.stable_secret"
 sysctl: reading key "net.ipv6.conf.default.stable_secret"
 sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
 sysctl: reading key "net.ipv6.conf.lo.stable_secret"
 net.ipv6.ip_nonlocal_bind = 0
 # 如果为开启,需要修改
 root@ha2:~# vim /etc/sysctl.conf
 #开启
 net.ipv4.ip_nonlocal_bind = 1
 #关闭
 net.ipv4.tcp_timestamps = 0
 # 配置生效
 root@ha2:~# sysctl -p
- 重启和设置开机启动 - 1 
 2- root@ha2:~# systemctl restart haproxy 
 root@ha2:~# systemctl enable haproxy
2. tomcat
2.1 安装jdk
安装的版本为:jdk-8u141-linux-x64.tar
服务器ip:192.168.0.223和92.168.0.2241
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 解压
root@tomcat1:/usr/local/src# tar xvf jdk-8u141-linux-x64.tar.gz 
# 设置软连接
root@tomcat1:/usr/local/src# ln -sv /usr/local/src/jdk1.8.0_141 /usr/local/jdk 
'/usr/local/jdk' -> '/usr/local/src/jdk1.8.0_141'
# 配置环境变量
root@tomcat1:/usr/local/src# vim /etc/profile
# 添加
export HISTTIMEFORMAT="%F %T `whoami` "
export export LANG="en_US.utf-8"
export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
说明:192.168.0.223和92.168.0.224操作一样。
2.2 安装tomcat
- tomcat下载和安装 - 1 
 2
 3
 4
 5
 6- # 下载apache-tomcat-8.5.59.tar.gz 
 root@tomcat2:/apps# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.59/bin/apache-tomcat-8.5.59.tar.gz
 # 解压
 root@tomcat2:/apps# tar xvf apache-tomcat-8.5.59.tar.gz
 # 软连接
 root@tomcat2:/apps# ln -sv /apps/apache-tomcat-8.5.59 /apps/tomcat
- tomcat启动 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112- # 创建用户 
 root@tomcat1:/apps# useradd -m www -u 2020 -s /bin/bash
 root@tomcat1:/apps# chown www.www /apps/ -R
 # 配置tomcat脚本
 # #########################################################
 # Tomcat init script for "中企动力科技股份有限公司"####
 ###########################################################
 # chkconfig: 2345 96 14 ###################################
 # description: 2016/11/1. 张士杰##########################
 # #########################################################
 JDK_HOME=/apps/jdk1.7.0_79
 CATALINA_HOME=/apps/tomcat
 export JDK_HOME CATALINA_HOME
 source /etc/profile
 #PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
 #NUM=`ps -ef | grep -v grep | grep java | awk '{print $2}' | wc -l`
 #case $1 in
 start() {
 echo "正在判断服务状态,请稍等!"
 echo "请稍等3秒钟"
 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
 if netstat -an | grep 8080 | grep LISTEN >/dev/null
 then
 echo "Tomcat已经正在运行了!"
 else
 echo "Tomcat没有运行,1秒后启动!"
 echo 1;sleep 1
 $CATALINA_HOME/bin/catalina.sh start
 echo "Tomcat 已经成功启动完成,5秒后判断是否启动成功"
 echo "5";sleep 1;echo "4";sleep 1
 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
 if netstat -an | grep 8080 | grep LISTEN >/dev/null
 then
 PID=`ps -ef | grep tomcat | grep jdk | awk '{print $2}'`
 NUM=`ps -ef | grep tomcat | grep jdk | awk '{print $2}' | wc -l`
 echo "Tomcat 已经成功启动${NUM} 个Tomcat进程!,PID为${PID}"
 else
 echo "Tomcat启动失败,请重新启动!"
 echo 1
 fi
 fi
 }
 stop() {
 PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
 NUM=`ps -ef | grep -v "color" | grep tomcat | awk '{print $2}' | wc -l`
 echo "正在判断服务状态,请稍等3秒钟!"
 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
 if netstat -an | grep 8080 | grep LISTEN >/dev/null
 then
 echo "Tomcat运行中,1秒后关闭!"
 echo 1;sleep 1
 echo "即将关闭Tomcat服务,请稍等!"
 $CATALINA_HOME/bin/catalina.sh stop ;echo "已经执行关闭命令,正在检查关闭了多少Tomcat进程,请稍等30秒钟!"
 sleep 27
 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
 pkill java && pkill tomcat
 if netstat -an | grep 8080 | grep LISTEN >/dev/null;then
 PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
 NUM=`ps -ef | grep -v "color" | grep tomcat | awk '{print $2}' | wc -l`
 kill -9 $PID ;echo "已成功关闭${NUM} 个tomcat进程"
 else
 echo "Tomcat 已经关闭完成!"
 echo "3";sleep 1;echo "2";sleep 1;echo "1";sleep 1
 fi
 else
 echo "Tomcat 没有运行"
 echo 1
 fi
 if netstat -an | grep 8080 | grep LISTEN >/dev/null;then
 PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
 #NUM=`ps -ef | grep -v "color" | grep tomcat | awk '{print $2}' | wc -l`
 echo "关闭失败,即将强制删除tomcat进程!"
 sleep 2
 pkill tomcat ;sleep 2
 if netstat -an | grep 8080 | grep LISTEN >/dev/null;then
 echo "强制关闭失败,即将再次强制删除tomcat进程!"
 pkill java; sleep 2
 fi
 fi
 }
 restart() {
 stop
 start
 }
 case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 restart)
 restart
 ;;
 *)
 echo $"Usage: $0 {start|stop|restart|status}"
 esac
 # 运行tomcat:
 root@tomcat1:/# bash /etc/init.d/tomcat start
 # 查看端口是否监听
 ss -ntlp|grep 8080
- tomcat目录结构 
 /data/tomcat/tomcat_appdir #保存web压缩包
 myapp_xxx_1.tar.gz
 myapp_xxx_3.tar.gz
 myapp_xxx_2.tar.gz
 /data/tomcat/tomcat_webdir #保存解压后的web目录
 myapp_xxx_1
 myapp_xxx_2
 myapp_xxx_3
 /data/tomcat/tomcat_webapps #tomcat app加载目录,在server.xml定义- 1 
 2
 3
 4- root@tomcat1:/apps/tomcat/conf# vim /apps/tomcat/conf/server.xml 
 <Host name="localhost" appBase="/data/tomcat/tomcat_webapps" unpackWARs="true" autoDeploy="true">
 /data/tomcat/tomcat_webapps/myapp --> /data/tomcat/tomcat_webdir/myapp_xxx_1
3. jenkines
jenkins版本:jenkins_2.204
ip:192.168.0.220和192.168.0.221
3.1 安装jenkines
- 安装daemo和openjdk - 1 
 2
 3
 4
 5- # 安装openjdk,jenkins是java程序 
 root@ha1:~# apt install openjdk-8-jdk
 # 安装daemon,jenkins启动需要的服务
 root@ha1:~# apt install daemon -y
- 安装jenkines - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21- # 下载jenkins 
 root@ha1:~# wget https://mirror.tuna.tsinghua.edu.cn/jenkins/debian/jenkins_2.204_all.deb
 # 安装jenkins
 root@ha1:~# dpkg -i jenkins_2.204_all.deb
 # 修改配置文件
 root@ha1:~# grep "^[a-Z]" /etc/default/jenkins
 NAME=jenkins
 JAVA_ARGS="-Djava.awt.headless=true"
 PIDFILE=/var/run/$NAME/$NAME.pid
 JENKINS_USER=$NAME
 JENKINS_GROUP=$NAME
 JENKINS_WAR=/usr/share/$NAME/$NAME.war
 JENKINS_HOME=/var/lib/$NAME
 RUN_STANDALONE=true
 JENKINS_LOG=/var/log/$NAME/$NAME.log
 JENKINS_ENABLE_ACCESS_LOG="no"
 MAXOPENFILES=65536 #修改
 HTTP_PORT=8080
 PREFIX=/$NAME
 JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"
centos安装长期支持版本1
2
3
4
5
6
7
8wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum upgrade
yum install jenkins java-1.8.0-openjdk-devel
systemctl daemon-reload
# 配置文件位置
vim /etc/sysconfig/jenkins
- 启动,设置开机启动1 
 2root@ha1:~# systemctl restart jenkins 
 root@ha1:~# systemctl enable jenkins
3.2 jenkins web界面配置
页面访问
http://192.168.0.220:8080/
输入“管理员密码”

查看“管理员密码”
root@ha1:~# cat /var/lib/jenkins/secrets/initialAdminPassword
9514c1feef0243a7a2d8bef072be4a60
问题1:jenkins离线
- 修改/var/lib/jenkins/hudson.model.UpdateCenter.xml - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 root@ha1:~# cat /var/lib/jenkins/hudson.model.UpdateCenter.xml
 <?xml version='1.1' encoding='UTF-8'?>
 <sites>
 <site>
 <id>default</id>
 <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
 ## 如果还是失败,可以使用http
 </site>
 </sites>
- 修改/var/lib/jenkins/updates/default.json 
 将前面的google换成baidu
- 重启1 root@ha1:~# systemctl restart jenkins 
安装插件,推荐使用“安装推荐的插件”

提速:
配置插件代理服务器,此处使用192.168.0.223配置一个nginx,做一个rewrite操作。在主配置文件加入一个location:
location /download/plugins         
{         
          proxy_set_header Host mirrors.tuna.tsinghua.edu.cn;         
          proxy_set_header X-Real-IP $remote_addr;         
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
             rewrite /download/plugins(.*) /jenkins/plugins/$1 break; 
             proxy_pass http://mirrors.tuna.tsinghua.edu.cn; 
    }
# jenkins服务器修改host指向该服务器地址
root@ha1:~# cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    ubuntu-template.magedu.local    ubuntu-template
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.0.223 updates.jenkins-ci.org #添加
插件安装界面:

#创建用户


安装完成:

登陆成功的界面:
