天天看點

Apollo分布式部署

環境:

PRO: Server1:172.16.2.16      服務:  apollo-configservice | apollo-adminservice | applo-portal

FAT:  Server2:172.16.2.17     服務:  apollo-configservice | apollo-adminservice

UAT: Server3:172.16.2.18     服務:   apollo-configservice | apollo-adminservice

每個環境都要部署獨立的mysql資料庫,不同的資料庫用于存放不同環境的同一個KEY的值。每台伺服器上都要configservice和adminservice。configservice用于資料的配置管理,adminservice用于和用戶端通訊,将key的值釋出到用戶端上

準備:

三台伺服器分别安裝JDK1.8,Maven3.5.0,Mysql5.7 Git1.7.1

安裝:configservice和adminservice,三台伺服器上都需要安裝

1

2

<code>cd</code> <code>/opt</code> 

<code>git clone</code>

<a href="https://github.com/ctripcorp/apollo.git"></a>

修改build.sh腳本

Server1配置

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>###修改build.sh腳本,修改資料庫位址和賬号密碼。</code>

<code>vim  </code><code>/opt/apollo/scripts/build</code><code>.sh</code>

<code>apollo_config_db_url=jdbc:mysql:</code><code>//127</code><code>.0.0.1:3306</code><code>/ApolloConfigDB</code><code>?characterEncoding=utf8</code>

<code>apollo_config_db_username=root</code>

<code>apollo_config_db_password=123456</code>

<code># apollo portal db info</code>

<code>apollo_portal_db_url=jdbc:mysql:</code><code>//127</code><code>.0.0.1:3306</code><code>/ApolloPortalDB</code><code>?characterEncoding=utf8</code>

<code>apollo_portal_db_username=root</code>

<code>apollo_portal_db_password=123456</code>

<code>##修改三個環境的apollo伺服器configservice位址</code>

<code># meta server url, different environments should have different meta server addresses</code>

<code>dev_meta=http:</code><code>//localhost</code><code>:8080</code>

<code>fat_meta=http:</code><code>//172</code><code>.16.0.17:8080</code>

<code>uat_meta=http:</code><code>//172</code><code>.16.0.18:8080</code>

<code>pro_meta=http:</code><code>//172</code><code>.16.0.16:8080</code>

注意:隻有部署了apollo-portal服務的伺服器上需要将所有環境的位址寫上去,其他環境的不用,比如

Server2的配置如下:

<code>fat_meta=http:</code><code>//172</code><code>.16.2.17:8080</code>

<code>uat_meta=http:</code><code>//anotherIp</code><code>:8080</code>

<code>pro_meta=http:</code><code>//yetAnotherIp</code><code>:8080</code>

Server3的配置如下:

<code>fat_meta=http:</code><code>//someIp</code><code>:8080</code>

<code>uat_meta=http:</code><code>//172</code><code>.16.2.18:8080</code>

apollo-portal是一個web控制台,用來做配置管理的。 服務是用來管理不同環境下的admin

apollo-configservice和apollo-adminservice:

需要把自己的IP和端口注冊到Meta Server(apollo-configservice本身)

1、修改apollo-adminservice或apollo-configservice 的bootstrap.yml檔案,加入以下配置

<code>eureka:</code>

<code>  </code><code>instance:</code>

<code>    </code><code>homePageUrl: http:</code><code>//</code><code>${指定的IP}:${指定的Port}</code>

<code>    </code><code>preferIpAddress: </code><code>false</code>

Server1的apollo-configservice/src/main/resources/bootstrap.yml檔案配置:

<code>    </code><code>home-page-url: http:</code><code>//172</code><code>.16.0.16:8080</code>

<code>    </code><code>hostname</code><code>: ${</code><code>hostname</code><code>:localhost}</code>

<code>    </code><code>preferIpAddress: </code><code>true</code>

Server1的apollo-adminservice/src/main/resources/bootstrap.yml檔案配置:

<code>    </code><code>home-page-url: http:</code><code>//172</code><code>.16.0.16:8090</code>

Server2和Server3隻需要将上面兩個檔案的中home-page-url的位址改成自己的IP即可。

導入apolloconfigdb.sql檔案到資料庫,并修改Eureka服務Url的值

先登入到資料庫,然後執行

<code>source</code> <code>/opt/apollo/scripts/sql/apolloconfigdb</code><code>.sql;</code>

修改資料庫ApolloConfigDB中ServerConfig表Eureka服務Url的值

<code>use  ApolloConfigDB;</code>

<code>show tables;</code>

<code>select</code> <code>* from  ServerConfig;</code>

<code>update ServerConfig </code><code>set</code> <code>Value=</code><code>'http://172.16.2.16:8080/eureka/'</code> <code>where Id=1;</code>

以上操作三台伺服器上都要做,Eureka服務Url的值的改成各自的IP位址

Server1上導入apolloportaldb.sql 檔案到資料庫,并修改部門

先登入到資料庫,然後執行:

<code>source</code> <code>/opt/apollo/scripts/sql/apolloportaldb</code><code>.sql;</code>

修改環境為pro,uat,fat

17

18

19

20

21

22

23

<code>use ApolloPortalDB;</code>

<code>mysql&gt; show tables;</code>

<code>+--------------------------+</code>

<code>| Tables_in_ApolloPortalDB |</code>

<code>| App                      |</code>

<code>| AppNamespace             |</code>

<code>| Authorities              |</code>

<code>| Consumer                 |</code>

<code>| ConsumerAudit            |</code>

<code>| ConsumerRole             |</code>

<code>| ConsumerToken            |</code>

<code>| Favorite                 |</code>

<code>| Permission               |</code>

<code>| Role                     |</code>

<code>| RolePermission           |</code>

<code>| ServerConfig             |</code>

<code>| UserRole                 |</code>

<code>| Users                    |</code>

<code>14 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code> </code><code>select</code> <code>* from ServerConfig;</code>

<code>update ServerConfig </code><code>set</code> <code>Value=</code><code>'fat,uat,pro'</code> <code>where Id=1;</code>

建構

分别在三台伺服器上執行./build.sh

将建構生成的壓縮包拷貝到/data/目錄下 解壓縮後,啟動服務

Server1

<code>cp</code> <code>/opt/apollo/apollo-configservice/target/apollo-configservice-0</code><code>.9.1-SNAPSHOT-github.zip  </code><code>/data</code>

<code>cp</code> <code>/opt/apollo/apollo-adminservice/target/apollo-adminservice-0</code><code>.9.1-SNAPSHOT-github.zip </code><code>/data</code>

<code>cp</code> <code>/opt/apollo/apollo-portal/target/apollo-portal-0</code><code>.9.1-SNAPSHOT-github.zip  </code><code>/data</code>

<code>cd</code> <code>/data</code>

<code>unzip apollo-adminservice-0.9.1-SNAPSHOT-github.zip -d apollo-adminservice</code>

<code>unzip apollo-configservice-0.9.1-SNAPSHOT-github.zip -d apollo-configservice</code>

<code>unzip apollo-portal-0.9.1-SNAPSHOT-github.zip -d apollo-portal</code>

建立log路徑, apollo三個服務日志路徑是固定的/opt/logs/下的100003171  100003172  100003173三個目錄100003173是portal服務的log目錄,是以不安裝portal服務的機器上不用建立該目錄

<code>mkdir</code> <code>-p </code><code>/opt/logs/</code><code>{100003171,100003172,100003173}</code>

修改權限為777

<code>chmod</code> <code>777 </code><code>/opt/logs/</code><code>*</code>

我的機器上由于/data目錄挂載的是資料盤,空間大,是以是将/opt/logs下的三個目錄軟連接配接到/data/logs/目錄下的

<code>ln</code> <code>-s </code><code>/data/logs/100003171</code> <code>/opt/logs/100003171</code>

<code>ln</code> <code>-s </code><code>/data/logs/100003172</code> <code>/opt/logs/100003172</code>

<code>ln</code> <code>-s </code><code>/data/logs/100003173</code> <code>/opt/logs/100003173</code>

修改portal服務啟動腳本中的服務端口,預設我8080,修改為8070,否則和configservice服務端口沖突。 

然後分别啟動portal、configservice、adminservice服務。啟動腳本位于zip包加壓縮後的目錄下的scripts目錄下

<code>ll </code><code>/data/apollo-adminservice/scripts/</code>

<code>total 8</code>

<code>-rwxr-xr-x 1 root root  339 Dec 13 15:57 </code><code>shutdown</code><code>.sh</code>

<code>-rwxr-xr-x 1 root root 3906 Dec 13 15:57 startup.sh</code>

<code>ll </code><code>/data/apollo-configservice/scripts/</code>

<code>-rwxr-xr-x 1 root root  340 Dec 13 15:57 </code><code>shutdown</code><code>.sh</code>

<code>-rwxr-xr-x 1 root root 3907 Dec 13 15:57 startup.sh</code>

<code>ll </code><code>/data/apollo-portal/scripts/</code>

<code>-rwxr-xr-x 1 root root  333 Dec 13 15:57 </code><code>shutdown</code><code>.sh</code>

<code>-rwxr-xr-x 1 root root 3900 Dec 13 17:12 startup.sh</code>

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/2050628,如需轉載請自行聯系原作者

下一篇: 雜亂筆記