Mesos&PaaS系列文章之五——負載均衡與服務發現

Mesos&Docker技術交流QQ羣:491137983,一起學習,共同進步!

本環境中多實例應用的訪問,可以通過Haproxy負載均衡服務提供支持,Haproxy的動態配置及實例的服務發現由Bamboo組件實現,當然,也可以使用大名鼎鼎的Consul來實現。

1.Haproxy組件

安裝

yum install -y haproxy

配置忽略VIP及開啓轉發

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
echo net.ipv4.ip_nonlocal_bind=1 >> /etc/sysctl.conf

重啓系統或者執行以下命令

sysctl -e net.ipv4.ip_forward=1
sysctl -e net.ipv4.ip_nonlocal_bind=1

重啓haproxy服務

systemctl restart haproxy

2.Bamboo組件

1、安裝或編譯
方式一、通過二進制包安裝

wget https://raw.githubusercontent.com/VFT/FileStore/master/bamboo/bamboo-0.2.15_1-1.x86_64.rpm
rpm -ivh bamboo-0.2.15_1-1.x86_64.rpm
wget -O /usr/bin/start-stop-daemon https://raw.githubusercontent.com/VFT/FileStore/master/bamboo/start-stop-daemon
wget -O /etc/init.d/bamboo-server https://raw.githubusercontent.com/VFT/FileStore/master/bamboo/init.d-bamboo-server
chown root:root /etc/init.d/bamboo-server
chmod 755 /etc/init.d/bamboo-server && chmod 755 /usr/bin/start-stop-daemon

方式二、通過源碼編譯
編譯Bamboo

# build dependencies
sudo yum install -y golang rpm-build rubygems ruby-devel
sudo gem install  fpm  --no-ri --no-rdoc
# setup a go build tree
sudo yum install -y git mercurial
export GOPATH=~/gopath
mkdir $GOPATH
go get github.com/tools/godep
go install github.com/tools/godep
# build the binary
# get newest source code
go get github.com/QubitProducts/bamboo
cd ${GOPATH}/src/github.com/QubitProducts/bamboo
# or get a specil version source code,such as:
# wget https://github.com/QubitProducts/bamboo/archive/v0.2.15.tar.gz
# tar xzvf v0.2.15.tar.gz
# cd bamboo-0.2.15/
go build

# edit builder/build.after-install
sed -i '10,15s/configure)/*)/g' builder/build.after-install

# edit builder/build.sh
sed -i 's/version=${_BAMBOO_VERSION:-"1.0.0"}/version=${_BAMBOO_VERSION:-"0.2.15"}/g' builder/build.sh
sed -i 's/arch="all"/arch="x86_64"/g' builder/build.sh
sed -i 's/pkgtype=${_PKGTYPE:-"deb"}/pkgtype=${_PKGTYPE:-"rpm"}/g' builder/build.sh

#運行命令生成rpm包,輸出到output目錄
./builder/build.sh

#進入到output目錄安裝rpm包
rpm -ivh bamboo-0.2.15_1-1.x86_64.rpm

編譯start-stop-daemon

yum install -y gcc wget
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar zxf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
cd apps/sys-utils/start-stop-daemon-IR1_9_18-2/
gcc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/bin

配置bamboo-server啓動(腳本位於源碼包中)

wget https://github.com/QubitProducts/bamboo/archive/v0.2.14.tar.gz
tar xzvf v0.2.14.tar.gz
cd bamboo-0.2.14/
cp builder/init.d-bamboo-server /etc/init.d/bamboo-server
chown root:root /etc/init.d/bamboo-server
chmod 755 /etc/init.d/bamboo-server

2、配置

mkdir /var/bamboo
cp /opt/bamboo/config/haproxy_template.cfg /var/bamboo/
cp /opt/bamboo/config/production.example.json /var/bamboo/production.json

修改/var/bamboo/production.json

{
  "Marathon": {
    "Endpoint": "http://192.168.2.71:8080,http://192.168.2.72:8080,http://192.168.2.73:8080",
    "UseEventStream": true
  },

  "Bamboo": {
    "Endpoint": "http://192.168.2.93:8000",
    "Zookeeper": {
      "Host": "192.168.2.71:2181,192.168.2.72:2181,192.168.2.73:2181",
      "Path": "/marathon-haproxy/state",
      "ReportingDelay": 5
    }
  },

  "HAProxy": {
    "TemplatePath": "/var/bamboo/haproxy_template.cfg",
    "OutputPath": "/etc/haproxy/haproxy.cfg",
    "ReloadCommand": "haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf $(cat /var/run/haproxy.pid)",
    "ReloadValidationCommand": "haproxy -c -f {{.}}"
  },

  "StatsD": {
    "Enabled": false,
    "Host": "localhost:8125",
    "Prefix": "bamboo-server.production."
  }
}

說明:Marathon.Endpoint:Marathon服務的訪問地址,Bamboo.Host:Bamboo服務控制檯地址,Bamboo.Zookeeper.Host:Zookeeper服務訪問地址

啓動Bamboo服務
systemctl start bamboo-server
停止Bamboo服務
systemctl stop bamboo-server
開機啓動
chkconfig bamboo-server on

3.Bamboo簡單使用

按上述配置Bamboo安裝後以後,Bamboo監聽8000端口,可以通過http://<IP>:8000來訪問bamboo的控制檯
bamboo console
添加轉發規則
bamboo edit
現在,可以通過http://<IP>,默認端口:80來訪問inky1這個app。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章