今天部署线上es,总结一波。
系统:乌班图 16.04
1,下载oracle jdk 并配置环境变量,如果是其他用户,安装安装包时可能会出现找不到javahome的情况,需要把软件安装路径的所有权改为当前用户 sudo chown -R 用户名:用户名 elasticsearch-6.3.0/ 。
2,乌班图系统 使用debian包,利用systemd启动(如果是centos则用rpm包,其他过程相同)
下载并安装公共key:wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
下载https包:sudo apt-get install apt-transport-https
echo “deb https://artifacts.elastic.co/packages/6.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
(手动下载6.3.0)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.deb.sha512
shasum -a 512 -c elasticsearch-6.3.0.deb.sha512
sudo dpkg -i elasticsearch-6.3.0.deb
开机自启动命令:sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
服务启动与停止命令:sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
配置文件默认在/etc/elasticsearch 其他在/usr/share/elasticsearch
3,用户名密码安全验证(默认为不可用,可试用一个月,如需永久使用,需要破解x-pack)
前面有文章破解过x-pack,修改两个源码文件,替换x-pack-core-6.3.0.jar包,申请证书并更改时间(修改为白金版50年)
此时xpack.security.enabled必须为false,否则申请不到,证书替换一下
修改elasticsearch.yml文件
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: “*”
这时候发现启动不了es
ERROR: [1] bootstrap checks failed
[1]: Transport SSL must be enabled for setups with production licenses. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
意思是要不关了x-pack security为false,要不开启ssl
进入es/bin目录 ./elasticsearch-certgen
填一堆东西:cert.zip 集群名字 文件夹名 ip地址多地址逗号分隔 节点名字多节点逗号分隔
会生成一个zip包,解压,把两个文件夹的文件都复制到elasticsearch配置文件目录下,然后在配置文件elasticsearch.yml
中添加:
xpack.security.transport.ssl.enabled: true
xpack.ssl.key: elasticsearch.key
xpack.ssl.certificate: elasticsearch.crt
xpack.ssl.certificate_authorities: ca.crt
这时候去生成密码 bin目录下 ./elasticsearch-setup-passwords interactive
会输入8遍密码 分别为elasticsearch,kibana,logstash,beats的密码
如果出现如下报错:
再重新启动elasticsearch会出现exception caught on transport layer [NettyTcpChannel{localAddress=0.0.0.0/0.0.0.0:45812, remoteAddress=/0:0:0:0:0:0:0:1:9300}], closing connection
出现这种情况应该禁用ipv6
vim /etc/sysctl.conf
添加如下变量
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
保存退出 sysctl -p 生效 (本次没有出现这次报错)
curl -u elastic x.x.x.x:9200 输入密码即可