安装 es 节点
准备:jdk1.8 安装包、es 7.3 安装包、kibana 7.3 安装包、ik、pinyin、elasticsearch-head 插件等
假设有三个节点的 host 分别为 :100.100.100.61、100.100.100.65、100.100.100.66
-
在 100.100.100.66 服务器上面安装 java 1.8 ,并在 /etc/profile 文件最后加入下面配置,保存后执行 source /etc/profile 生效,并查看 java -version 确认是否安装成功:
export JAVA_HOME=/data/jdk export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH -
添加用户 es
useradd es -
用 jar 包安装 es ,并且配置 elasticsearch.yml
cluster.name: qjfy node.name: node_66 node.master: true node.data: true path.data: /usr/local/data path.logs: /usr/local/logs http.port: 9200 transport.tcp.port: 9300 network.host: 0.0.0.0 discovery.seed_hosts: ["100.100.100.66:9300", "100.100.100.61:9300", "100.100.100.65:9300"] cluster.initial_master_nodes: ["node_66","node_65","node_61"] -
配置 jvm.options
-Xms4g -Xmx4g -
在 root 权限下修改 /etc/sysctl.conf ,在最后加入
vm.max_map_count=655360 # 限制一个进程拥有虚拟内存区域的大小保存后执行
sudo sysctl -p -
在 root 权限下修改 /etc/security/limits.conf,添加以下两行
* hard nofile 65536 * soft nofile 65536 * -
在 root 权限下修改 data 读写权限和用户
chmod 777 /usr/local/data(可选) chmod 777 /usr/local/logs(可选) chown -R es /usr/local/data chown -R es /usr/local/logs -
切换到 es 用户下启动 es ,浏览器输入以下命令检查是否安装成功
100.100.100.66:9200 -
其他两个数据节点 100.100.100.61 和 100.100.100.65 服务器上除 elasticsearch.yml 中 node.name 属性不同,其他操作一样
参数配置有不懂的地方可参考:blog.csdn.net/xiaoge335/a… 中的解释,或者直接看官方文档解释
100.100.100.66 安装 kibana
-
用 jar 包安装 kibana ,配置 kibana.yml
server.host: "0.0.0.0" elasticsearch.hosts:["http://100.100.100.66:9200"]
-
修改 kibana 目录用户
chown -R es /usr/local/kibana-7.3.0 -
切换到 es 用户,先启动 es ,再启动 kibana ,在浏览器中输入以下命令,检查 kibana 是否成功安装
100.100.100.66:5601
100.100.100.66 节点上安装 head
-
在 git 上面下载 git://github.com/mobz/elasticsearch-head.git 解压后的文件上传到 100.100.100.66 的 /usr/local 文件夹下,并改名为 head
-
使用 uname -a 命令查看服务器系统位数,去 nodejs.cn/download/ 网页下下载对应的 nodejs tar 包,解压后放到 /usr/local ,文件夹名字改为 node
-
建立软连接,变为全局
ln -s /usr/local/node/bin/npm /usr/local/bin/ ln -s /usr/local/node/bin/node /usr/local/bin/使用 node -v 和 npm -v 检查是否安装成功
-
在root 权限下,进入 head 文件夹,配置 npm 的代理、镜像、安装 grunt、安装插件(这个过程有点迷,总之能跑通,有懂的人可以评论告我)
npm config set proxy http://代理 ip:端口 (不需要代理可跳过) npm config set registry http://registry.npm.taobao.org npm install cnpm npm install -g grunt-cli npm install # 此时会报错,报错什么版本,就安装对应什么版本,我的是 npm install phantomjs-prebuilt@2.1.16 --ignore-scripts ,然后在执行 npm install -
在 Gruntfile.js 下的 connect.server.options 下增加
hostname: "*",在 _site/app.js 文件中的
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";改为
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://100.100.100.66:9200"; -
在安装 node 的节点 100.100.100.66 服务器上修改 usr/local/elasticsearch/config/elasticsearch.yml ,加入以下内容允许跨域
http.cors.enabled: true http.cors.allow-origin: "*" -
重启 es ,在 head 文件夹下运行以下命令,浏览器访问 100.100.100.66:9100 ,如果集群健康值为 green 则表示安装成功,使用即可。
npm run start nohup npm run start & (后台运行)如果 head 要访问的 es 节点由权限控制,需要按照如下方式在浏览器访问
http://100.100.100.66:9100/?auth_user=账号&auth_password=密码 -
(可选)如果 head 插件中集群状态为未连接,则用浏览器控制台查看跨域 CORS 报错的字段是什么,如 key ,见下报错信息
CORS policy: Request header field key is not allowed by Access-Control-Allow-Header in preflight response在 elasticsearch.yml 中添加如下配置
http.cors.allow-headers: "key"重启 es 和 node 即可,如果仍然报此错,再将报错的字段追加到上述配置中,重复过程直到集群健康值为 green
http.cors.allow-headers: "key,content-type,altitoken" -
集群运行过程中,如果停掉其中一个 es 节点,不影响数据的使用,重启也会自动连入集群。
-
如果想使用 head 通过其他节点查看集群情况,则需要配置第 5 步到最后的类似操作