Jenkins與gitlib實現自動化部署與持續構建

Jenkins概念

Jenkins是一個功能強大的應用程序,容許持續集成和持續交付項目,不管用的是什麼平臺。這是一個免費的源代碼,能夠處理任何類型的構建或持續集成。集成Jenkins能夠用於一些測試和部署技術。Jenkins是一種軟件容許持續集成。php

 Jenkins目的

一、持續、自動地構建/測試軟件項目。 
二、監控軟件開放流程,快速問題定位及處理,提示開放效率。html

特性

開源的java語言開發持續集成工具,支持CI,CD。 
易於安裝部署配置:可經過yum安裝,或下載war包以及經過docker容器等快速實現安裝部署,可方便web界面配置管理。 
消息通知及測試報告:集成RSS/E-mail經過RSS發佈構建結果或當構建完成時經過e-mail通知,生成JUnit/TestNG測試報告。 
分佈式構建:支持Jenkins可以讓多臺計算機一塊兒構建/測試。 
文件識別:Jenkins可以跟蹤哪次構建生成哪些jar,哪次構建使用哪一個版本的jar等。 
豐富的插件支持:支持擴展插件,你能夠開發適合本身團隊使用的工具,如git,svn,maven,docker等。java

 產品發佈流程

產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發佈上線 
持續集成 (Continuous integration,簡稱CI) 
持續交付(Continuous delivery) 
持續部署(continuous deployment)mysql

持續集成:多名開發者在開發不一樣功能代碼的過程當中,能夠頻繁的將代碼進行合併到一塊兒不相互影響工做。linux

持續部署:是基於某種工具或平臺實現代碼自動化的構建、測試和部署到線上環境以實現交付高質量的產品,持續部署在某種程度上表明了一個開發團隊的更新迭代速率。c++

上線方案

開發本身上傳
--最原始的方案
開發給運維手動上傳
--運維本身手動部署
運維使用腳本複製
--半自動化
結合web界面一鍵部署
--自動化

版本控制系統

在公司的服務器安裝某種程序,該程序用於按照特定格式和方式記錄和保存公司多名開發人員不按期提交的源代碼,且後期能夠按照某種標記及方式對用戶提交的數據進行還原。git

CVS--早期的集中式控制系統
SVN--集中式版本控制系統
--集中式管理,依賴於網絡,一臺服務器集中管理 Gitlib--分佈式版本控制系統 --2002年由Linux內核做者linus使用C語言開發
--分佈式版本控制系統,不依賴於服務器,離線依然能夠工做

網站:https://github.comgithub

集中式版本控制系統

任何的提交和回滾都依賴於鏈接服務器web

SVN服務器是單點sql

分佈式版本控制系統

Git在每一個用戶都有一個完整的服務器,而後在有一箇中央服務器,用戶能夠先將代碼提交到本地,沒有網絡也能夠先提交到本地,而後在有網絡的時候再提交到中央服務器,這樣就大大方便了開發者,而相比CVS和SVN都是集中式的版本控制系統,工做的時候須要先從中央服務器獲取最新的代碼,改完以後須要提交,若是是一個比較大的文件則須要足夠快的網絡才能快速提交完成,而使用分佈式的版本控制系統,每一個用戶都是一個完整的版本庫,即便沒有中央服務器也能夠提交代碼或者回滾,最終再把改好的代碼提交至中央服務器進行合併便可。

系統環境準備

最小化服務器安裝,配置以下:

# yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y
# yum install curl policycoreutils openssh-server openssh-clients postfix -y
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# systemctl  disable firewalld
# sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
# hostnamectl  set-hostname xxx.com.cn
# yum update –y && reboot

Gitlib安裝

# vim /etc/yum.repos.d/gitlib.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
# yum install gitlab-ce

Gitlib配置

Rpm包下載地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
[root@gitlib-server ~]#vim /etc/gitlab/gitlab.rb 

external_url 'http://192.168.10.130'

external_url ‘http://192.168.10.130‘ #服務器IP地址

gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "rooroot@163.com"
gitlab_rails['smtp_password'] = "zhang@123"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "rooroot@163.com"
user["git_user_email"] = "rooroot@163.com"

Gitlib服務器初始化

執行配置並啓動服務:
#  gitlab-ctl reconfigure  #修改完配置文件要執行此操做
# gitlab-ctl  start
# gitlab-ctl  stop
# gitlab-ctl  restar

Gitlib驗證啓動

#ss -ntl

驗證端口及狀態
80端口和8080端口是在初始化gitlib的時候啓動的,所以若是以前的有程序佔用會致使初始化失敗或沒法訪問!

登錄web頁面

登陸web頁面並設置密碼,最少8位:
http://192.168.130.8

登陸Gitlib

登錄,默認用戶weiroot

 默認頁面

註冊帳號

默認狀況下能夠直接註冊帳號,所以,通常都關閉此功能

關閉帳號註冊功能

取消帳戶註冊功能以後點save

驗證帳號註冊功能是否關閉

添加帳號

添加一個帳號

設置新帳戶密碼

使用第一次的新帳號登陸要設置密碼

 

 發送設置密碼郵件

設置密碼

在收件箱打開郵件設置密碼

設置密碼

 建立項目

使用管理員建立項目

建立組

組裏能夠有多個項目分支,能夠將開發添加到組裏面進行設置權限,不一樣的組就是公司不一樣的開發項目或者業務模塊,不一樣的組添加不一樣的開發便可實現對開發設置權限的管理

將用戶添加到組

爲項目建立一個index頁面

找到項目界面

 

添加一個頁面

安裝git客戶端 

# yum install git –y
# mkdir  /source
# cd /source/
# git clone http://192.168.10.130/myweb/myweb1.git

驗證index.html文件是否存在

編輯文件並提交

# git config --global user.name "jack「
# git config --global user.email 2973707860@qq.com
# cd myweb1
# vim index.html
# git add index.html
# git commit -m "333「
# git push -u origin

Git經常使用命令總結

git config --global user.name 「name「 #設置全局用戶名,能夠非真實帳戶
git config --global user.email  xxx@xx.com #設置全局郵箱,能夠非真實郵箱
git config --global –list #列出用戶全局設置
git  add index.html  #添加文件到暫存區
git commit -m 「11「  #提交文件到工做區
git status #查看工做區的狀態
git push #提交代碼到服務器
git pull  #獲取代碼到本地
git log #查看操做日誌
vim  .gitignore  #定義忽略文件
git reset --hard  HEAD^  #git版本回滾, HEAD爲當前版本,加一個^爲上一個,^^爲上上一個版本
git reflog # #獲取每次提交的ID,可使用--hard根據提交的ID進行版本回退
git reset --hard 5ae4b06 #回退到指定id的版本
# git branch  #查看當前所處的分支
git checkout --  file  #從服務器更新某個那文件覆蓋本地的文件

部署tomcat服務器

各web服務器準備tomcat運行環境

# useradd  www  -u 2000
# mkdir /apps && cd /apps
# tar xvf jdk-7u79-linux-x64.tar.gz
# ln -sv /apps/jdk1.7.0_79 /apps/jdk
# vim /etc/profile
export export LANG="en_US.utf-8"
export JAVA_HOME=/apps/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
# source  /etc/profile && java -version
# tar xvf apache-tomcat-7.0.59.tar.gz
# ln -sv /apps/apache-tomcat-7.0.59 /apps/tomcat

準備tomcat啓動腳本

# cp /root/tomcatd /etc/init.d/

部署app

確認各web服務器訪問正常

# mkdir  /data/tomcat_appdir #保存web壓縮包
# mkdir /data/tomcat_webdir #保存解壓後的web目錄
# cd tomcat_webdir
# mkdir myapp
# echo tomcatX > /apps/tomcat_webdir/myapp/index.html

確認各web服務器訪問正常

部署haproxy

部署haproxy

# tar xvf haproxy-1.5.18.tar.gz
# cd haproxy-1.5.18
# make TARGET=linux2628 PREFIX=/usr/local/haproxy-1.5.18
# make install PREFIX=/usr/local/haproxy-1.5.18
# ln -sv /usr/local/haproxy-1.5.18/ /usr/local/haproxy
# cp examples/haproxy.init  /etc/init.d/haproxy #啓動腳本
# chmod  a+x /etc/init.d/haproxy
# chkconfig  --add haproxy &&  chkconfig  haproxy on
# ln  -sv /usr/local/haproxy/sbin/haproxy  /usr/sbin/
# mkdir /etc/haproxy
# cp examples/haproxy.cfg  /etc/haproxy/

編輯本機hosts文件,將myapp.web.com解析到對應的IP負載IP

C:\Windows\System32\drivers\etc\hosts
192.168.10.132  myapp.web.com

記錄haproxy日誌

# vim /etc/rsyslog.conf:
 14 # Provides UDP syslog reception
 15 $ModLoad imudp #去掉註釋
 16 $UDPServerRun 514 #去掉註釋
 18 # Provides TCP syslog reception
 19 $ModLoad imtcp #去掉註釋
 20 $InputTCPServerRun 514 #去掉註釋
# systemctl  restart  rsyslog
log 127.0.0.1 local0 info #global部分
frontend web_port #監聽端口
        bind 0.0.0.0:80
        mode http
        option httplog
        log global
        option  forwardfor

重啓rsyslog和haproxy服務,驗證/var/log/haproxy.log能夠記錄日誌:

訪問負載狀態頁面

驗證反向代理功能

安裝jenkins

能夠將數據保存在單獨的磁盤

mkfs.xfs  /dev/sdb
mount /dev/sdb  /data/
chown   jenkins.jenkins  /data/ -R

jenkins安裝及啓動

經過rpm包安裝jenkins

rpm –ivh jdk-8u111-linux-x64.rpm
rpm –ivh https://pkg.jenkins.io/redhat/jenkins-2.27-1.1.noarch.rpm
/etc/init.d/jenkins start
 chkconfig  jenkins on  

日誌顯示啓動並運行

jenkins啓動報錯

沒法正常啓動jenkins

沒有java環境

配置java環境

使用官方倉庫安裝:
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# yum install java jenkins
直接下載二進制安裝包:
# tar xvf jdk-8u111-linux-x64.tar.gz  -C /usr/local/src/
# ln -sv /usr/local/src/jdk1.8.0_111 /usr/local/jdk
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
# source  /etc/profile && java –version
使用rpm安裝包安裝java並啓動jenkins:
#rpm –ivh jdk-8u111-linux-x64.rpm

配置jenkins

# vim /etc/sysconfig/Jenkins
JENKINS_HOME=「/data「  #數據目錄,使用高IO大容量磁盤
JENKINS_USER=「jenkins「 #啓動用戶
JENKINS_PORT=「8080「  #啓動端口

訪問web界面

若是虛擬及配置較低,則啓動頁面可能須要很長的時間,所以推薦4G或更多內存,4C或更多CPU

從新完成的日誌

# tail /var/log/jenkins/jenkins.log  -f

安裝密碼

輸入安裝的下一步

Jenkins插件安裝

插件安裝過程當中,若是由安裝失敗不要緊,能夠後期安裝

若是自動安裝失敗,能夠減壓準備好的插件

#cd /var/lib/jenkins/plugins
#tar xvf jenkins_plugin.tar.gz
#chown  jenkins.jenkins ./* -R
#/etc/init.d/jenkins  start

插件下載地址

http://updates.jenkins-ci.org/download/plugins/

注:未安裝成功的插件最好從新安裝下

建立用戶

建立登陸用戶

帳號建立完成

登陸成功

郵件配置

設置管理員郵件地址

發送郵件設置

從git獲取代碼

gitLab
gitlab Hook Plugin 

安裝查件中

插件安裝界面,會額外安裝一些依賴關係的插件,jenkins插件有的基於ruby開發,因此會安裝ruby環境

添加git用戶

在gitlab管理界面將用戶添加到一個項目,下一步要用此用戶拉取項目代碼

權限確認

確認用戶對項目有提交的權限

添加部署key

部署key能夠用於獲取代碼

測試部署key

測試能夠不使用用戶名密碼,直接獲取代碼

Jenkins添加git用戶

添加一個認證用戶,拉取git代碼的時候使用

http://192.168.10.131:8080/credentials/store/system/domain/_/newCredentials

Jenkins建立項目

建立項目

配置適用git源

配置git項目地址和用戶

使用Jenkins構建項目

點擊當即構建

代碼測試sonar

官網:hrttp://www.sonarqube.org/

Sonar 是一個用於代碼質量管理的開放平臺,經過插件機制,Sonar 能夠集成不一樣的測試工具,代碼分析工具,以及持續集成工具。與持續集成工具(例如 Hudson/Jenkins 等)不一樣,Sonar 並非簡單地把不一樣的代碼檢查工具結果(例如FindBugs,PMD等)直接顯示在Web頁面上,而是經過不一樣的插件對這些結果進行再加工處理,經過量化的方式度量代碼質量的變化,從而能夠方便地對不一樣規模和種類的工程進行代碼質量管理。在對其餘工具的支持方面,Sonar 不只提供了對 IDE 的支持,能夠在 Eclipse 和 IntelliJ IDEA 這些工具裏聯機查看結果;同時Sonar還對大量的持續集成工具提供了接口支持,能夠很方便地在持續集成中使用 Sonar,此外,Sonar 的插件還能夠對 Java 之外的其餘編程語言提供支持,對國際化以及報告文檔化也有良好的支持。

安裝數據庫

數據庫不支持5.5的版本,支持5.6之後的版本。

# yum -y install autoconf   && tar xvf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
#ln -sv /usr/local/src/mysql-5.6.34-linux-glibc2.5-x86_64 /usr/local/mysql
#cd /usr/local/mysql/
# useradd  mysql  -s /sbin/nologin
#  chown  -R mysql.mysql  ./* -R
# mkdir /data && chown  mysql.mysql /data/ -R
# /usr/local/mysql/scripts/mysql_install_db  --user=mysql --datadir=/data/ --basedir=/usr/local/mysql/
#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#cp /usr/local/mysql/my.cnf  /etc/my.cnf
# vim /etc/my.cnf
basedir = /usr/local/mysql
datadir = /data
port = 3306
#/etc/init.d/mysql  start
#ln -sv /usr/local/mysql/bin/mysql /usr/bin/

mysql數據庫建立及受權

# /usr/local/mysql/bin/mysql
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON sonar.* TO sonar@"jenkins-server.example.com"  IDENTIFIED BY "123456";
GRANT ALL ON sonar.* TO sonar@"192.168.100.%" IDENTIFIED BY "123456";
FLUSH PRIVILEGES;
/usr/local/mysql/bin/mysql  -usonar -p123456 -h192.168.10.131

部署sonar

sonar依賴於java環境,並且java版本必須是1.8版本或更高,不然sonar啓動失敗

# unzip sonarqube-5.6.zip
#ln -sv /usr/local/src/sonarqube-5.6 /usr/local/sonar
[root@jenkins-server ~]# grep "^[za-Z]" /usr/local/sonar/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://192.168.10.131:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.port=8800

# /usr/local/sonar/bin/linux-x86-64/sonar.sh  start

點擊右上角login登陸,默認用戶名密碼都是admin

sonar安裝中文支持

#/usr/local/sonar/extensions/plugins/ #插件本地路徑
安裝中文插件:
administration-system-update center-available,在後面的搜索框搜索插件名稱,而後點install安裝: 
或在插件目錄/usr/local/sonar/extensions/plugins執行wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.11/sonar-l10n-zh-plugin-1.11.jar而後重啓服務: 
# /usr/local/sonarqube-5.6/bin/linux-x86-64/sonar.sh  restart 

部署掃描器

Sonar經過掃描器進行代碼質量分析,即掃描器的具體工做就是掃描代碼

下載地址:

http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
# unzip sonar-scanner-2.6.1.zip 
# ln -sv /usr/local/src/sonar-scanner-2.6.1 /usr/local/sonar-scanner
# cd /usr/local/sonar-scanner/
# grep "^[a-Z]" conf/sonar-scanner.properties 
sonar.host.url=http://localhost:8800
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://192.168.10.131:3306/sonar?useUnicode=true&characterEncoding=utf8

準備測試代碼

# cd /home/jack/
# unzip sonar-examples-master.zip 
# cd  sonar-examples-master
# cat  projects/languages/php/php-sonar-runner/sonar-project.properties  #如下是默認配置
# Required metadata
sonar.projectKey=org.sonarqube:php-simple-sq-scanner #key
sonar.projectName=PHP :: Simple Project :: SonarQube Scanner #項目名稱,會顯示在儀表盤
sonar.projectVersion=1.0 #版本
# Comma-separated paths to directories with sources (required)
sonar.sources=src #代碼目錄
# Language
sonar.language=php #語言格式爲php
# Encoding of the source files
sonar.sourceEncoding=UTF-8 #編碼格式

執行掃描

#pwd
/home/jack/sonar-examples-master/projects/languages/php/php-sonar-runner
#/usr/local/sonar-scanner/bin/sonar-scanner  #手動在當前目錄執行掃描,如下是掃描過程的提示信息

掃描的配置文件能夠在每一個項目都放一個,或在Jenkins界面作配置

讓jenkins關聯到sonar scanner

在jenkins插件安裝界面安裝sonar插件sonarqube plugin

系統管理—系統設置

添加掃描器

系統管理-Global Tool Configuration

配置掃描

選擇本身的項目(demo)-->-構建觸發器-- >構建-->execute

sonarqube scanner,將配置文件的內容修改爲以下格式填寫完成後點保存

sonar.projectKey=test-demo
sonar.projectName=test-demo
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=php
sonar.sourceEncoding=UTF-8

點擊項目的當即構建,下圖是執行成功的信息

構建歷史

 查看項目的構建歷史

構建失敗郵件通知

構建失敗後會發送郵件通知管理員

部署代碼

 將代碼部署到web服務器

建立項目

新建一個項目叫test-deploy用於代碼發佈,上一個項目test-demo可用於代碼測試,當測試階段出現問題的時候也不會當即進行發佈,只有當測試經過後才執行發佈的項目。

如何將代發佈到web服務器上?

能夠經過執行命令或腳本的方式進行代碼發佈,在各web服務器包括Jenkins服務器建立一個www用戶,保持id一致,用於啓動web服務並進行代碼發佈

# useradd  www
# echo "123456" | passwd --stdin www
# su - www
$ ssh-keygen

添加key

添加jenkins服務器www用戶的公鑰到git服務器項目當中

確認key

 確認www用戶的key能夠拉取代碼

Shell腳本

關於權限

通常使用非root用戶啓動web服務及完成代碼發佈,默認Jenkins運行使用的是Jenkins用戶,所以須要賦予Jenkins用戶必定的權限,另外發布的腳本能夠在本機也能夠不在本機,須要使用Jenkins用戶ssh到發佈服務器執行shell腳本。

將腳本放在/home/www用戶家目錄,git代碼也放在家目錄,所以須要jenkins服務器遠程到代碼發佈服務器執行遠程命令,須要作免登錄認證,將jenkins服務器root和www用戶的公鑰放在代碼部署服務器的www用戶家目錄.ss/authorized_keys文件中:
# su - www
$ vim /home/www/.ssh/authorized_keys

$ chmod  600 authorized_keys

驗證ssh

在root用戶和www用戶下ssh到本機的www用戶,確承認以避免密碼登陸,以便讓部署服務器將用戶的key添加到know_keys,不然報錯Host key verification failed:

配置jenkins用戶sudo權限

# vim /etc/sudoers
56 # Defaults    requiretty #不須要tty
99 jenkins ALL=(ALL)       NOPASSWD: /usr/bin/ssh #不須要使用密碼便可執行ssh

腳本內容

$ cd /home/www/
$ vim deploy.sh
#!/bin/bash
echo $USER
cd /home/www/myweb1
git pull
scp -r  ./*  www@192.168.10.133:/apps/tomcat/webapps/myapp
scp -r  ./*  www@192.168.10.134:/apps/tomcat/webapps/myapp

測試執行命令

在test-deploy項目的構建步驟調用,項目—配製—構建

執行結果

Web服務器免密碼登陸

複製www用戶公鑰到各web服務器的www用戶

$ ssh-copy-id    www@192.168.10.133
$ ssh-copy-id    www@192.168.10.134

提交代碼

在另一臺服務器編輯代碼後從新提交:
# git  clone http://192.168.10.130/web/myweb1.git
# echo 「xxx」 >>  index.html
# git add index.html
# git commit index.html
# git push

在jenkins執行項目構建
構建項目以前要在www用下的xxx項目裏面進行git pull命令。不然第一次更新提示輸入yes會致使部署失敗
再次提交代碼

項目關聯

配置項目test-demo的構建後操做,demo構建完成後自動構建demp-deploy項目

添加構造後操做

構建關聯成功

定義視圖

 安裝pipeline插

添加試圖

定義名稱

  配置視圖

在pipeline進行構建

自動構建

GitLab觸發jenkins構建項目
目的爲在公司的測試環境當中一旦開發向gitlab倉庫提交成功代碼,gitlab通知jenkins進行構建項目、代碼質量測試而後部署至測試環境,注意這只是測試環境,而生產環境依然須要手動部署代碼

安裝插件

安裝Gitlab Hook Plugin插件:
#系統管理-管理插件-可選插件-Gitlab Hook Plugin和Build Authorization Token Root Plugin

 Token

# openssl  rand -hex 12
f7d0ead5398bd808ee139067

配置觸發器

配置gitlib觸發

#插件使用介紹,https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin 
#選擇項目-設置-webhooks: 
http://192.168.10.131:8080/buildByToken/build?job=test-demo&token=f7d0ead5398bd808ee139067
格式以下:
http://X.X.X.X:8080/buildByToken/build?job=項目名&token=隨機數

保存後進行測試

 

測試成功

測試git觸發Jenkins自動部署 

在另外一臺向git服務器提交代碼,驗證是否自動化部署

# echo "ccc" >> index.html
# git add index.html
# git commit -m "ccc「
# git push

驗證成功構建

實如今haproxy動態增減服務器

在Jenkins服務器複製www用戶的公鑰到haproxy服務器:
$ ssh-copy-id  root@192.168.10.132
# ssh-copy-id  root@192.168.10.132
Haproxy服務器編輯# vim /etc/sudoers必需要tty
# vim /etc/sudoers
root    ALL=(ALL)       ALL
jenkins ALL=(ALL)       NOPASSWD: /usr/bin/ssh
www     ALL=(ALL)       ALL

測試www和root用戶的ssh功能

動態增減haproxy後端服務器

開啓功能
# vim /etc/haproxy/haproxy.cfg
stats socket /usr/local/haproxy/stats mode 600 level admin
安裝命令並測試
yum install socat
#echo "help"| socat stdio /usr/local/haproxy/stats
# echo "show info"| socat stdio /usr/local/haproxy/stats
#echo "show stat"| socat stdio /usr/local/haproxy/stats
# echo "disable server  myapp_host/web2"|socat stdio /usr/local/haproxy/stats

echo "enable  server  myapp_host/web2"|socat stdio /usr/local/haproxy/stats

分組是爲了在代碼分批次上線的時候對後端服務器的一種篩選方法

相關文章
相關標籤/搜索