consul線上部署的一些總結(持續更新中。。。)

   最近線上consul部署遇到的一些問題,和開發有點區別。還是總結下一些所謂的方法吧。如果大家有好的方法歡迎討論

【1】war包丟到tomcat中註冊不到consul,但是服務是可以訪問的

  在本地發開因爲是springboot直接啓動,所以註冊沒問題,通過idea配置外部tomcat運行時還是沒問題。But當我把war信誓旦旦的放到正式服務器上,what?竟然沒有成功。一直註冊不進去,分析了半天發現idea是把編譯文件直接放到了\webapps\ROOT下。爲了驗證我又把ROOT下的對應文件拷到另一個tomcat中竟然註冊成功了(前提是配置文件裏的註冊discover地址要改成和tomcat端口一樣才行)。

所以在服務器的tomcat中修改了對應編譯jar的文件如下:

之後通過寫了shell腳本進行的編譯部署:

(1)先把存在wars包所在項目進行編譯:unzip xxx.war -d  路徑名/xxx

(2)./startup.sh

這樣運行後成功註冊到了consul中

【2】重複註冊服務

線上有個服務重複啓動後發現註冊了兩次,通過修改實例名進行保證實例的唯一性。

server:
  port: 8095
  number: 1001
spring:
  application:
    name: xx-service
  cloud:
    # 使用consul作爲註冊中心
    consul:
      # 正式環境service模式
      host: ${CONSUL_HOST:172.16.56.9}
      port: ${CONSUL_PORT:8500}
      discovery:
        port: ${server.port}
        register: true
        instance-id: ${spring.application.name}:${server.port}:${server.number}

通過給部署的實例進行編碼拼接到 instance-id中

【3】刪除無效服務

可以通過consul的api進行操作

如果你不知道服務對應的實例id,首先查看下consul的日誌:

通過consul日誌查看具體哪個服務實例有問題,找到對應的id通過命令刪除:

curl -X PUT 'http://xxx:8500/v1/agent/service/deregister/xx-service'

不報錯再看服務就好了。

還要一些其他問題後續再進行更新。。

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