部署ES + Kibana 到生产环境的笔记

目前基于一个ES的应用开发接近完成,须要将App部署到线上进行测试。因为在本地开发是用的Docker,因此切换到线上还须要在Linux(ubuntu16LTS)中在安装一些必要到应用。为了往后方便,因而便有了这个笔记。java

预备工做

由于众所周知的缘由,直接实用原厂资源连接去下载应用程序,速度上面会比较慢,因此预先选择一个速度较快的国内镜像以减轻等待过程的痛苦。linux

以 ubuntu 16.04LTS 在阿里云的镜像,编辑 /etc/apt/sources.list 文件,注释掉原来的内容,更换为如下内容:数据库

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
复制代码

保存后,更新缓存 sudo apt updatebootstrap

若是是在已经有的系统中安装ES,最好现将原系统盘备份。后面安装过程须要修改一些系统参数,万一改坏了,还能还原。(备份过程略)ubuntu

安装 OpenJDK

java -version
复制代码

若是已经有了Java环境,跳过这一步。缓存

sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
复制代码

下载 ElasticSearch 和 Kibana

以当前最新版本为例:安全

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz

# 解压
tar -vxsf elasticsearch-6.6.0.tar.gz
tar -vxsf kibana-6.6.0-linux-x86_64.tar.gz

复制代码

配置/启动 ES和KB

在两个应用在config目录下,均有同名的yml配置文件。能够配置诸如:数据库、日志路径,服务绑定地址、端口号等信息。bash

若是Es服务的绑定地址是本机内部(127.0.0.1),那么直接能够启动了。若是是外部可访问地址(0.0.0.0),那么须要修改虚拟内存。不然会报告虚拟内存太小,并终止程序继续运行。服务器

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
复制代码

处理方法: 修改/etc/sysctl.conf文件,加入网络

vm.max_map_count=262144

不须要重启,运行:

sysctl -w vm.max_map_count=262144

ES不容许以root的身份去运行,这样一旦因配置问起形成安全漏洞,会致使整个服务器的安全隐患。因此,若是当前是root帐户,须要创建一个别的帐户以启动

# 建立组
groupadd elsearch
# 建立用户
useradd elsearch –g elsearch –p elsticsearch
# ES的权限修改,记得还要修改数据库和日志目录
chown –R elsearch:elsearch ./ElasticSearch
复制代码

在bin目录下的同名可执行文件,即是应用程序的启动文件。直接之后台方式运行便可。

最后,将es和kb的启动命令加入 rc.local 每次随服务器重启而自动启动服务。

安全建议

除了配置防火墙,将二者默认端口 9200和5601放行以外,还须要留意的是ES的API能够根据项目的运行环境制定一个合适的策略。当前项目的搜索都是经过程序内的业务逻辑,调用ES的搜索API进行,并不须要直接对外。因此绑定的9200端口不须要暴露在公网上。

而Kb服务并非一直须要,只有在刚刚开始运行或者遇到问题的时候才须要。这个时候能够将KB配置为绑定外部IP,可是能够不启动这个服务。或者防火墙配置可访问的5601端口的请求IP为本公司网络IP。

相关文章
相关标签/搜索