jmx遠程連接阿里雲服務器記錄

應用環境
  1. 阿里雲服務器:近期雙十一阿里雲服務器很便宜所以我買了一個服務器來自己動手試試看(騰訊雲之前沒看到所以沒考慮)
  2. linux :CentOS7 64
  3. linux :jdk8
  4. linux :activemq
  5. 本地 window jdk8
  6. 使用jconsole進行jmx連接
進行activemq配置參考鏈接
  1. 網絡上有很多activemq的下載安裝,自行百度。如果要進行jmx連接,直接啓動bin目錄下的activemq,不需要進去相關linux目錄。
  2. 在/conf目錄下修改activemq.xml 在broker標籤中添加 userJmx=“true” (這個必須配置,官方文檔也有)
  3. 在/conf目錄下修改activemq.xml 的broker標籤下面的 (改動了createConnector爲true 還有connectorHost=“120.25.237.138” connectorPort=“11099”)(官方文檔並不是這麼做的,不過我成功了,現在沒時間研究了以後有機會會深入理解的)
    <managementContext>
            <managementContext createConnector="true" connectorHost="120.25.237.138" connectorPort="11099"/>
        </managementContext>
    
  4. 一旦使用jmx監控則會需要用到conf目錄下的jmx.access(記錄賬號的權限)以及jmx.password(記錄賬號密碼).那麼你需要把這兩個文件通過一下命令設置成只讀模式,這樣啓動activemq纔不會報錯(原本不使用兩個文件所以就算你不設置也不會報錯)
    	chmod -400 /"你的activemq安裝目錄“/conf/jmx.*
    
  5. 修改bin目錄下的activemq啓動文件。需要在裏面的invoke_start方法裏面添加
        ACTIVEMQ_HOME=/usr/local/activemq
        ACTIVEMQ_BASE=${ACTIVEMQ_HOME}
        ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 -    Dcom.sun.management.jmxremote.ssl=false \-Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password \-Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access"
    
    以下代碼(官方文檔也有),當然網上亂七八糟的寫法很多。
    其實結果大同小異,都是啓動jmx 和 設置密碼驗證文件,以及取消ssl。設置到了就可以了
  6. 由於阿里雲貌似自己做了安全組管理,所以防火牆作用不大就默認關閉了。所以防火牆的設置都去安全組設置
    在開啓activemq之後,會開啓很多相關的端口,其中有2個額外的隨機端口,是jmx鏈接的關鍵,因爲這兩個額外的端口會影響jmx鏈接,需要在安全組裏面打開這兩個端口。當然,其他相關端口也需要打開的。下面是相關命令
     ps -ef | grep activemq | grep -v grep
     netstat -tunlp | grep  “對應pid”
    
  7. 最後一個很坑的問題:由於阿里雲服務器有着2個ip,所以他的hostname默認爲私網ip,可是我需要公網訪問,所以他的啓動綁定了私網ip導致無法遠程鏈接。使用 hostname -i 命令可以查看。在/etc/hosts文件中修改hostname,之後啓動,才能正常連接。
    重點來了:網上很多人都說修改hosts文件,沒說爲什麼,而且修改的地方其實也不起作用(或者是我理解錯了)。
    下面貼上我的hosts文件(當然不是7777啦 我自己瞎改改的 不給你看哈哈哈)
    ::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
    127.0.0.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4
    120.25.XXX.XXX	77777777777777777777777	77777777777777777777
    
    很多博客都說是把127.0.0.1修改成本機ip,可是筆者改了沒作用,最後在這裏找到了靈感網頁鏈接,然後修改了下面的ip地址(從178.XXX.XXX.XXX到120.25.XXX.XXX)。改完可以進行jmx鏈接了。筆者也去百度了一下這幾個ip的作用。最後總算是理解了。
總結
  1. 筆者花了很多時間,2、3天把,在弄這件事,本以爲不需要很多時間所以想一步到位,最後還是自己虛擬機搭載然後一步步排查問題,果然什麼事情都急不來的,還是應該一步一步來。(搭了虛擬機進度可快多了)
  2. 由於這幾天都在搞linux所以對linux的命令熟悉了不少吧。
番外
  1. 進行java代碼獲取jmx屬性時。可以修改activemq.xml裏面的borker端口的borkername,因爲默認爲localhost,我是讀取本機ip然後讀取的,所以出錯了,由此記錄。
tomcat
  1. 再/bin目錄下的catalina.sh文件添加內容(在# ----- Execute The Requested Command -----------------------------------------前添加)
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"

如果設置安全驗證爲true後,比如將jdk目錄下的/jdk8/jre/lib/manamger/目錄下面的jmxromate.access 和 jmxromate.password兩個文件 (分別是權限和密碼)設置爲600 ,如果沒有 jmxromate.password 就把 jmxromate.password。temlate變成 jmxromate.password
然後啓動

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