一、Head插件簡介
ElasticSearch-head是一個H5編寫的ElasticSearch集群操作和管理工具,可以對集群進行傻瓜式操作。
- 顯示集群的拓撲,並且能夠執行索引和節點級別操作
- 搜索接口能夠查詢集群中原始json或表格格式的檢索數據
- 能夠快速訪問並顯示集群的狀態
- 有一個輸入窗口,允許任意調用RESTful API。這個接口包含幾個選項,可以組合在一起以產生有趣的結果;
- 5.0版本之前可以通過plugin名安裝,5.0之后可以獨立運行。
二、基於docker安裝
這里主要介紹2種操作系統的安裝方法
centos鏡像
新建目錄/opt/elasticsearch-head-centos
mkdir /opt/elasticsearch-head-centos
cd /opt/elasticsearch-head-centos
dockerfile
編輯dockerfile文件
FROM centos # 安裝 RUN yum install -y bzip2.x86_64 unzip wget && yum clean all && \ cd /etc/yum.repos.d/ && \ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo && \ rm -rf /etc/yum.repos.d/CentOS-Base.repo && \ yum clean all && yum makecache && \ yum install -y epel-release.noarch && \ yum install -y nodejs && \ npm install -g cnpm --registry=https://registry.npm.taobao.org && \ npm install -g grunt && \ npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy && \ cd / && wget https://github.com/mobz/elasticsearch-head/archive/master.zip && \ unzip master.zip -d / && rm -rf master.zip && cd /elasticsearch-head-master && \ npm install -g cnpm --registry=https://registry.npm.taobao.org && \ cnpm install EXPOSE 9100 # 工作目錄 WORKDIR /elasticsearch-head-master # 啟動腳本 RUN echo '#!/bin/sh'>/run.sh && echo 'grunt server'>>/run.sh && chmod +x /run.sh ENTRYPOINT [ "/run.sh"]
這里選用的鏡像是centos,版本是centos 7
注意:node版本必須大於6.0,使用yum安裝就是大於6.0的版本!
很多人都不知道ENTRYPOINT這個參數是干啥的?我重新聲明一下,在啟動鏡像的時候,它會自動調用ENTRYPOINT定義的命令。
所以在dockerfile里面的RUN中,沒有必要去啟動服務!
生成鏡像
docker build -t elasticsearch-head-centos /opt/elasticsearch-head-centos
啟動容器
docker run -d -it --restart=always -p 9100:9100 elasticsearch-head-centos
訪問頁面
http://192.168.91.128:9100/
效果如下:
ubuntu鏡像
新建目錄/opt/elasticsearch-head-ubuntu
mkdir /opt/elasticsearch-head-ubuntu
cd /opt/elasticsearch-head-ubuntu
在此目錄下,新建文件sources.list
vim sources.list
內容如下:
deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial main deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
dockerfile
編輯dockerfile文件
FROM ubuntu:16.04 # 修改更新源為阿里雲 ADD sources.list /etc/apt/sources.list # 安裝jdk和elasticsearch RUN apt-get update && apt install -y npm curl && \ npm install -y npm@latest -g && \ npm install -g n && \ n latest && \ npm install -g cnpm --registry=https://registry.npm.taobao.org && \ npm install -g grunt && \ npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy && \ apt-get install -y wget unzip && apt-get clean all && \ wget https://github.com/mobz/elasticsearch-head/archive/master.zip && \ unzip master.zip -d / && rm -rf master.zip && \ cd /elasticsearch-head-master/ && \ npm install && \ cnpm install EXPOSE 9100 # 工作目錄 WORKDIR /elasticsearch-head-master # 添加啟動腳本 RUN echo '#!/bin/sh'>/run.sh && echo 'grunt server'>>/run.sh && chmod +x /run.sh ENTRYPOINT [ "/run.sh"]
注意:這里選用的鏡像,版本必須是ubuntu:16.04。最新版本安裝可能有問題
下面這幾行命令,表示安裝最新版的npm。因為默認的npm版本是4.x,無法符合head插件的要求!
npm install -y npm@latest -g npm install -g n n latest
生成鏡像
docker build -t elasticsearch-head-ubuntu /opt/elasticsearch-head-ubuntu
啟動容器
注意:這一步,可不需要執行。因為上面已經映射了9100端口,這里再執行會報錯!
docker run -d -it --restart=always -p 9100:9100 elasticsearch-head-ubuntu
三、head插件連接elasticsearch
在這篇博客中,鏈接如下:
https://www.cnblogs.com/xiao987334176/p/9957879.html#autoid-3-6-0
已經介紹了elasticsearch的安裝,直接啟動鏡像即可!
訪問elasticsearch頁面
可以發現,版本是6.4.3
打開head插件的頁面,輸入elasticsearch訪問地址,點擊連接
咦,怎么點擊,網頁下方就是沒有反應。為什么呢?
打開elasticsearch-head的github地址
https://github.com/mobz/elasticsearch-head
這里面有介紹
它只說了,能連接到5.x。那么6.x能不能連接呢?不知道!
那么因此,我們可能會得出結論,head插件,確實不支持6.x啊,我點擊了半天,確實沒有反應啊!
要是head插件不能連接6.x,那我寫這篇文章,豈不打臉嗎?此處省略一萬字.....
連接6.x解決方案
其實問題的關鍵點,不在於head插件,而是在於elasticsearch。
elasticsearch還漏了2行關鍵的配置參數
http.cors.enabled: true http.cors.allow-origin: "*"
登錄elasticsearch所在的服務器,進入目錄/opt/elasticsearch,編輯run.sh
增加2行配置
#!/bin/bash set -e # 添加時區 TZ=Asia/Shanghai ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 設置權限 chown -R elasticsearch:elasticsearch /etc/elasticsearch # 判斷目錄是否存在,否則創建 if [ ! -d /var/lib/elasticsearch/data ];then mkdir -p /var/lib/elasticsearch/data chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/data fi if [ ! -d /var/log/elasticsearch/logs ];then mkdir -p /var/log/elasticsearch/logs chown -R elasticsearch:elasticsearch /var/log/elasticsearch/logs fi # 修改數據和日志目錄 sed -i '33s@/var/lib/elasticsearch@/var/lib/elasticsearch/data@g' /etc/elasticsearch/elasticsearch.yml sed -i '37s@/var/log/elasticsearch@/var/log/elasticsearch/logs@g' /etc/elasticsearch/elasticsearch.yml # 修改綁定ip和端口 sed -i '55s@#network.host: 192.168.0.1@network.host: 0.0.0.0@g' /etc/elasticsearch/elasticsearch.yml sed -i '59s@#http.port: 9200@http.port: 9200@g' /etc/elasticsearch/elasticsearch.yml # 允許head插件可以訪問es echo 'http.cors.enabled: true' >> /etc/elasticsearch/elasticsearch.yml echo 'http.cors.allow-origin: "*"' >>/etc/elasticsearch/elasticsearch.yml # 修改啟動文件,去掉-d參數,避免后台運行 sed -i 72's@-d -p $PID_FILE@-p $PID_FILE@g' /etc/init.d/elasticsearch # 啟動elasticsearch,要hold住,否則容器啟動就退出了! /etc/init.d/elasticsearch start root@xiao:/opt/elasticsearch# cat run.sh #!/bin/bash set -e # 添加時區 TZ=Asia/Shanghai ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 設置權限 chown -R elasticsearch:elasticsearch /etc/elasticsearch # 判斷目錄是否存在,否則創建 if [ ! -d /var/lib/elasticsearch/data ];then mkdir -p /var/lib/elasticsearch/data chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/data fi if [ ! -d /var/log/elasticsearch/logs ];then mkdir -p /var/log/elasticsearch/logs chown -R elasticsearch:elasticsearch /var/log/elasticsearch/logs fi # 修改數據和日志目錄 sed -i '33s@/var/lib/elasticsearch@/var/lib/elasticsearch/data@g' /etc/elasticsearch/elasticsearch.yml sed -i '37s@/var/log/elasticsearch@/var/log/elasticsearch/logs@g' /etc/elasticsearch/elasticsearch.yml # 修改綁定ip和端口 sed -i '55s@#network.host: 192.168.0.1@network.host: 0.0.0.0@g' /etc/elasticsearch/elasticsearch.yml sed -i '59s@#http.port: 9200@http.port: 9200@g' /etc/elasticsearch/elasticsearch.yml # 允許head插件可以訪問es echo 'http.cors.enabled: true' >> /etc/elasticsearch/elasticsearch.yml echo 'http.cors.allow-origin: "*"' >>/etc/elasticsearch/elasticsearch.yml # 修改啟動文件,去掉-d參數,避免后台運行 sed -i 72's@-d -p $PID_FILE@-p $PID_FILE@g' /etc/init.d/elasticsearch # 啟動elasticsearch,要hold住,否則容器啟動就退出了! /etc/init.d/elasticsearch start
重新生成elasticsearch鏡像
docker build -t elasticsearch-6.4.3 /opt/elasticsearch
殺掉elasticsearch進程
docker rm aee7068b2c4e -f
重新啟動elasticsearch
docker run -d -it --restart=always -p 9200:9200 elasticsearch-6.4.3
等待幾分鍾,訪問elasticsearch頁面
訪問elasticsearch頁面
再次使用head插件頁面連接
這樣,就連接成功了!!!
本文參考鏈接:
https://blog.csdn.net/chengyuqiang/article/details/78838175