centos 上,安装单机的elasticsearch,使用yum命令很方便。
但在集群安装时,就需要重复在多个虚机中安装,比较麻烦。
办法一:
先在一台虚机中安装elasticsearch,kibana,x-pack,分词组件等。再进行虚机复制。
为避免虚机复制后,可能需要重复修改配置,可以使用一些技巧来避免重复修改
elasticsearch.yml 中:
#使用主机名称作为节点名称
node.name: ${HOSTNAME}
#主机ip配置
network.host: 0.0.0.0
# 这里列出集群的全部节点的IP
discovery.zen.ping.unicast.hosts: ["192.168.2.11", "192.168.2.12", "192.168.2.13", "192.168.2.14"]
同样,kibana.yml中也可以同样
server.host: 0.0.0.0
办法二:
当虚机已经复制好,需要安装多个es的节点,或者需要对集群进行升级时,就必须在多个虚假中重复执行安装。
如果集群规模较大,使用yum安装需要重复下载,过程较长。
为避免重复下载,可以在一个虚机(或其他局域网内一台机器上)下载,其他的使用已经下载的安装包进行更新,可以加速安装过程
在一台机器(如 192.168.2.81)上,配置一个httpd的服务,把es的安装包下载后,通过http共享给其他机器使用。
在/var/www/html/ 中创建 download/elasticsearch目录
其中加入一个sh脚本(es-dnload.sh)如下:
[elasticsearch]$ more es-dnload.sh
#!/bin/bash
ES_VERSION="5.2.2"
ES_BASEURL="https://artifacts.elastic.co/downloads"
wget ${ES_BASEURL}/kibana/kibana-${ES_VERSION}-x86_64.rpm
wget ${ES_BASEURL}/elasticsearch/elasticsearch-${ES_VERSION}.rpm
wget ${ES_BASEURL}/packs/x-pack/x-pack-${ES_VERSION}.zip
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v${ES_VERSION}/elasticsearch-analysis-ik-${ES_VERSION}.zip
执行该脚本后,完成安装包的下载
这样,在 http://192.168.2.81/download/elasticsearch中,就能看到以上已经下载好的文件包 (elasticsearch, kibana, x-pack,analysis-ik)
接下来,创建一个脚本 upgrade-es.sh,内容如下:
#!/bin/bash
URL_BASE="http://192.168.2.81/download/elasticsearch"
ES_VERSION="5.2.2"
ES_HOME="/usr/share/elasticsearch"
KIBANA_HOME="/usr/share/kibana"
echo "###"
echo "### cleaning current installation ... "
echo "###"
systemctl stop kibana
systemctl stop elasticsearch
rm -rf /var/log/elasticsearch/*
rm -rf /var/log/kibana/*
${ES_HOME}/bin/elasticsearch-plugin remove x-pack
${KIBANA_HOME}/bin/kibana-plugin remove x-pack
rpm -e elasticsearch
rpm -e kibana
echo "###"
echo "### install elasticsearch ${ES_VERION} and kibana ..."
echo "###"
for fn in "elasticsearch-${ES_VERSION}.rpm" "kibana-${ES_VERSION}-x86_64.rpm"
do
wget ${URL_BASE}/${fn}
if [ ! -f "$fn" ]; then
echo “$fn” not exist
exit
fi
rpm --install ${fn}
rm ${fn}
done
echo "###"
echo "### installing x-pack ..."
echo "###"
fn=x-pack-${ES_VERSION}.zip
wget ${URL_BASE}/${fn}
if [ ! -f "$fn" ]; then
echo "$fn" not exist
exit
fi
path=`pwd`
${ES_HOME}/bin/elasticsearch-plugin install file://${path}/${fn}
${KIBANA_HOME}/bin/kibana-plugin install file://${path}/${fn}
rm ${fn}
echo "###"
echo "### install analysiz-ik ..."
echo "###"
fn=elasticsearch-analysis-ik-${ES_VERSION}.zip
wget ${URL_BASE}/${fn}
if [ ! -f "$fn" ]; then
echo "$fn" not exist
exit
fi
unzip -d "$ES_HOME"/plugins/analysis-ik ${fn}
rm ${fn}
echo "###"
echo "### restoring prev-config ..."
echo "###"
cd /etc/elasticsearch
cp elasticsearch.yml.rpmsave elasticsearch.yml
cp jvm.options.rpmsave jvm.options
cd /etc/kibana
cp kibana.yml.rpmsave kibana.yml
这样,sudo ./upgrade-es.sh 就可以完成一台机器的升级
把upgrade-es.sh 复制到集群的其他节点上,执行脚本就可以快速完成安装