DCOS雲平臺之業務多應用部署改造方案

jaymarco發表於2020-09-24

1           雲平臺改造需求

由於上線活動系統平臺是將所有活動封裝在一套docker映象環境。因而存在活動更新與釋出應用會影響其它活動正常使用,每次上線新活動也需要測試人員對全部活動進行功能測試,增加了測試人員的工作量。活動在釋出的過程中需要重啟服務對其它活動使用也會存在一定的干擾,這樣會讓客戶對系統體驗效果感覺極差。

客戶需求提出:

1、 新上線活動釋出與調整不影響其它活動正常使用。

2、 多個活動之間效能無互相干擾。

3、 新上線的活動只需要測試新需求,測試不需要全面覆蓋功能。

4、 每個應用活動對應一個子域名,並能夠透過80埠來訪問。

5、 手機微信端要求使用80埠訪問活動。

由於當前雲平臺架構方案是無法滿足客戶提出來的以上5點要求,因而我們需要對當前雲平臺架構做出適當調整,已滿足客戶業務系統使用要求。

2           雲平臺改造目標

在雲平臺harpxoy負載上游前端加一套nginx keepalived高可用反向代理伺服器,使得所有活動入口都得透過nginx反向代理,然後子域名加80埠來訪問。下游每個活動單獨一個docker活動映象,然後透過雲平臺釋出活動。後續新增的活動需要人工在nginx配置檔案中加入新活動的反向代理配置,然後過載nginx配置。

3           應用部署流程

流程說明:

1、 開發提供上線程式碼給DCOS運維工程師。

2、 按生產配置修改上線程式碼中的配置。

3、 將上線程式碼按tag方式上傳到SVN或git程式碼伺服器。

4、 使用DCOS雲平臺自動化構建應用映象。

5、 使用DCOS雲平臺釋出應用映象或更新應用映象。

6、 新增活動需要在nginx伺服器加入反向代理部分配置,更新活動就不需要這步操作。

7、 新增活動過載nginx配置生效,更新活動不需要這步操作。

4           活動映象構建

注:方案省略如何去獲取開發上線程式碼與上傳SVN程式碼這兩個操作。

4.1       上線程式碼配置更新

1 .修改配置檔案:front/suites/config/config.php,請按實際生產地址修改。

1) 、變更操作:(修改URL 域名和Redis 地址)  

$config['sess_save_path'] = ' redis_ip:6379?auth=Redis@2017';   // 修改生產redis地址

 

// 將臨時域名huodong.youoil.cn 替換成 生產域名huodongzs.youoil.cn

define('NOTIFY_URL', ' front/index.php/_activity/activity/notify');

define('RETURN_URL', ' front/index.php/_activity/activity/response');

 

2 )、變更REDIS 部分

$config['redis'] = [

      'host'              =>  'redis_ip',

      'port'              =>  '6379',         

      'auth'              =>  'Redis@2017',         

      'time_out'          =>  1,             

      'retry_interval'    =>  100,            

];

 

2. 修改生產資料庫配置檔案 front/suites/config/database.php

變更操作:( 修改生產資料庫的IP 地址、資料庫名、賬號與密碼)

'hostname' => '  ,                

'username' =>  ,                 

'password' =>  ,           

'database' => '  '      

 

3. 修改程式碼front/suites/themes/default/js/activity.js檔案

// 修改成外網對映域名

var signUrl =   options.isTest ? ' /front/index.php/_activity/activity/make_sign'   : '';

var url = options.isTest   ? ' /front/index.php/_activity/activity/entrance'   : '';

4.2       應用映象準備

1、 定義資料卷

宿主機共享路徑

容器路徑

目錄用途

/sharefs/cecrm_acitivtycenter/frontcert

/var/www/cecrm_acitivtycenter/uploads

儲存前臺證照

/sharefs/cecrm_acitivtycenter/uploads

/var/www/cecrm_acitivtycenter/cert

存放後臺推送過來的活動靜態檔案

 

 

2、 前臺應用映象dockerfile

前提條件:

1) 需要準備一個安裝好nginx1.0+php-fpm7.0支援redis、gd、unzip等擴充套件包的基礎映象。

2) 準備好開發完成的應用程式碼

3) 準備好應用載入的配置檔案

4) 準備nginx配置檔案

5) 前臺應用dockerfile檔案(dockerfile檔案由開發商提供)

FROM xx.xx.xx.24/dcos_mgmt/nginx-phpfpm70:v1.0.3  ## 基礎映象

MAINTAINER   jaymarco@shsnc.com

ADD front   /var/www/cecrm_acitivtycenter/front        ## 程式碼檔案

ADD   website.nginx.conf /etc/nginx/conf.d/website.nginx.conf  ##nginx 配置檔案

ADD   MP_verify_xhggISVWupuON4Z9.txt  /var/www/cecrm_acitivtycenter/MP_verify_xhggISVWupuON4Z9.txt   ## 微信驗證檔案

4.3       活動映象構建

首先開發商將活動平臺程式碼提交給中經匯通運維工程師,並將程式碼提交到中經SVN伺服器上面,然後運維同事按( 4.1 小節)變更配置檔案後將檔案更新SVN服務上。

 

1 登入DCOS平臺,進行“資源管理”—》“專案映象”,然後點選“新建”

2 、選擇系統對應的專案,並輸入映象名

3 、程式碼控制選擇 ”svn”

4 、輸入SVN地址,SVN賬號和密碼,然後選擇對應的SVN版本號

 

5 、選擇自定義構建SVN模板,輸入映象版本號,然後定義好構建映象流水線命令

6 、點選“開始構建”按鈕

5           雲平臺釋出活動

5.1       部署新增活動

地址: 活動平臺 /tags/front

賬號: activity_platform

密碼: act_plat_123456

1 、建立活動平臺應用: 活動平臺系統

2 、建立服務

1 )、設定伺服器名稱、容器資源分配和容器個數。

2 )、選擇服務的映象名和網路模式。

3 )、設定服務對映埠。

4 )、配置服務使用負載均衡

5 )、配置應用健康檢查

6 )、配置服務儲存卷

 

7 )、指定容器執行叢集

5.2       更新活動應用

這裡舉例更新一下活動平臺後臺應用映象

1 、選中“活動平臺後臺”服務,然後點“服務管理”按鈕

2 、然後選擇“容器設定”選項,找到部署版本找到需要更新的映象。最後點確定。

6           更新 NGINX 反向代理

這裡就不介紹如何去搭建一套nginx+keepalived 主從環境,主要介紹新增了活動如何來更新反向代理配置。

注:以下操作步驟只是針對新活動釋出,更新老活動不需要以下配置。

1、   檢視活動釋出後對應的埠

 

2、 將釋出後的新活動對映到nginx代理。

請在兩臺nginx伺服器增加反向程式碼配置

NGINX 伺服器(xx.xx.xx.37, xx.xx.xx.38)

請在兩臺nginx 配置檔案/etc/nginx/conf.d/website.nginx.conf 增加如下內容

#################################add   proxy############################

upstream   {

      ip_hash;

    server xx.xx.xx.32:10013;  

}

 

server {

          listen      80;

          server_name   ;

           location ~ ^/NginxStatus/ {

            stub_status on;

            access_log off;

           }

           location / {         

            proxy_pass  ;

            proxy_buffering off;

            proxy_redirect off;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP   $remote_addr;

            proxy_set_header REMOTE-HOST   $remote_addr;

            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

            client_max_body_size 50m;

            client_body_buffer_size 256k;

            proxy_connect_timeout 30;

            proxy_send_timeout 30;

            proxy_read_timeout 60;

            proxy_buffer_size 256k;

            proxy_buffers 4 256k;

            proxy_busy_buffers_size 256k;

            proxy_temp_file_write_size 256k;

            proxy_next_upstream error timeout   invalid_header http_500 http_503 http_404;

            proxy_max_temp_file_size 128m;

          }

}

#################################end   proxy############################

 

3、 過載 NGINX 配置

新增活動後在兩臺nginx 主機上面生效配置。

/usr/sbin/nginx –s reload

有需要的朋友可以關注我的公眾號,文章每日一更


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2723808/,如需轉載,請註明出處,否則將追究法律責任。

相關文章