学习分布式和微服务,整么能不会docker呢。一键安装部署es,zk,mysql等,简直爱上了它。下面是我在虚拟机上一步步成功安装的过程。和大家分享下。
【备注:我是完全关闭了虚拟机的防火墙。如果只想开放部分端口供外界访问。可使用如下命令:
firewall-cmd --add-port=9300/tcp】
yum –y install wget
vmware下Linux虚拟机静态IP无法上网问题解决思路
配置一张网卡就可以了。但如果需要两张网卡:一张访问外网,一张访问内网。则可参照文章
vmware下Linux虚拟机静态IP无法上网问题解决思路
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="c2c4547f-2dac-4ae4-98f6-8493cb42a713"
DEVICE="enp0s3"
ONBOOT="yes"
IPADDR=192.168.0.204
GATEWAY=192.168.0.1
NETMASK=255.255.255.0
DSN1=114.114.114.114
需要注意这里的网关GATEWAY:要和下图查到的一致
DSN1可以和上图的一致,也可以使用通用的114.114.114.114
- 然后配置域名解析
vim /etc/resolv.conf- 里面的内容如下:【nameserver的值要和DSN1的值保持一致】
nameserver 114.114.114.114
参考:
通过这样就能添加网卡了
其实对于enp0s8不需要你再做任何配置,它默认是dhcp型
但如果要自己配置该新增的网卡的信息,可参照如下:
使用如下命令记住网卡的UUID
nmcli con show
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s8"
UUID="d17e33d2-4379-3719-9ade-bca016509211"
DEVICE="enp0s8"
ONBOOT="yes"
# IPADDR=192.168.0.222
# GATEWAY=192.168.0.1
# NETMASK=255.255.255.0
# DSN1=114.114.114.114
HWADDR=08:00:27:00:29:7f
我把BOOTPROTO=“static”,还配了IPADDR,GATEWAY,但是这样的双网卡就能连外网,但是ping不通baidu.com,所以后面还是改成了原来的配置【双网卡可能一张是static,一张是dhcp吧,两张都static,域名解析就会失败】
查看路由和网关
route -n
重启网络的几种命令
/etc/init.d/network restart
service network restart
refer:菜鸟教程
docker更换境内源,提升速度
vi /etc/docker/daemon.json
添加如下内容
{
“registry-mirrors”: [“https://registry.docker-cn.com”]
}
可以到此去查看docker仓库里面的各镜像的版本:
https://hub.docker.com/
启动docker
systemctl start docker
或者
systemctl daemon-reload
systemctl restart docker.service
- docker搜索镜像
docker search 镜像名- docker下载指定版本的镜像
docker pull logstash:6.8.7- docker换源[没有以下文件就创建一个]
- 编辑
vim /etc/docker/daemon.json- 里面的内容如下:
{
“registry-mirrors”: [“https://9cpn8tt6.mirror.aliyuncs.com”]
}- 然后重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
查看镜像
docker images -a
删除镜像
docker rmi 容器id
查看容器
docker ps -a
移除容器
docker rm 容器名
启动容器
docker start 容器名
首次启动容器:
docker run -d --name 要命名的容器名 已存在的镜像名
查看容器启动日志
docker logs -f -t --tail 100【显示行数】 es【容器名】
详情参考/遇到问题:请参考:docker简易搭建ElasticSearch集群
es配置文件详解
单个es时的配置文件如下:
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 39.107.247.46
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
单个启动命令
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data1:/usr/share/elasticsearch/data --name es elasticsearch:5.6.8
cd /opt
mkdir -p ES/config
cd ES/
mkdir data1
mkdir data2
mkdir data3
chmod 777 data1 data2 data3
cd /opt/ES/config
vim es1.yml
vim es2.yml
vim es3.yml
es1.yml配置文件如下:
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2
es2.yml配置文件如下:
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2
es3.yml配置文件如下:
cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.0.104
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.0.104:9300","192.168.0.104:9301","192.168.0.104:9302"]
discovery.zen.minimum_master_nodes: 2
vim /etc/sysctl.conf
sysctl -p
sysctl.conf文件如下
vm.max_map_count=655360
fs.file-max=655360
vm.max_map_count=262144
docker安装es镜像
docker pull elasticsearch:5.6.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:5.6.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /opt/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:5.6.8
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /opt/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:5.6.8
然后浏览器运行测试
安装es可视化管理工具
#docker pull mobz/elasticsearch-head:5
#docker run -d -p 9100:9100 --name es-manager mobz/elasticsearch-head:5
docker pull kibana:5.6.8
docker run --name kibana -e ELASTICSEARCH_URL=http://39.107.247.46:9200 -p 5601:5601 -d kibana:5.6.8
浏览器访问http://192.168.0.104:9100/
[启动es报错---必看](https://www.cnblogs.com/duanxuan/p/6473005.html) 失败日志:docker logs -f -t es
1. 先创建 /opt/es/config 和 /opt/es/data1 ,然后 chmod 777 /opt/es/data1
还需创建/opt/es/config/es1.yml,其内容如下:
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 127.0.0.1
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
2. 修改内存
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功。
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /opt/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/es/data1:/usr/share/elasticsearch/data --name es elasticsearch:6.8.7
查看地址:http://192.168.0.101:9200/
3. 安装ik
docker exec -it es /bin/bash
mkdir /usr/share/elasticsearch/plugins/ik
exit
下载安装包:网址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.7/elasticsearch-analysis-ik-6.8.7.zip
执行命令: docker cp /opt/elasticsearch-analysis-ik-6.8.7.zip es:/usr/share/elasticsearch/plugins/ik/
docker exec -it es /bin/bash
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.8.7.zip
rm -rf elasticsearch-analysis-ik-6.8.7.zip
exit
docker restart es
测试:
GET _analyze
{
"analyzer": "ik_smart",
"text": ["山东山西"]
}
5.安装kibana
docker pull kibana:6.8.7
docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.0.102:9200 -p 5601:5601 -d kibana:6.8.7
查看地址: http://192.168.0.101:5601/
当我用docker安装ik5.6.8时出现问题
NoSuchFileException: /usr/share/elasticsearch/plugins/ik/plugin-descriptor.properties
我按照网上的下载了ik5.6.8的zip文件,拷贝并解压到了 /usr/share/elasticsearch/plugins/ik目录下
最终结果是plugin-descriptor.properties位于/usr/share/elasticsearch/plugins/ik/elastic/目录下
运行docker报文件找不到,包也找不到。原因是5.6.8的配置文件,jar包都要位于ik下,高版本的ik解压时没有elastic,解决办法就是一个一个复制过去
docker cp plugin-descriptor.properties es:/usr/share/elasticsearch/plugins/ik/
这是先没有用docker,而是用了zookeeper的jar包
./zkServer.sh start …/conf/zoo_sample.cfg
./zkCli.sh -server localhost:2222
docker pull rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
用户名,密码默认是:guest/guest
管理页面的访问地址:
http://39.107.247.46:15672/#/
mkdir /mydata/logstash
vim logstash.conf
输入内容如下:
input {
tcp {
port => 4560
codec => json_lines
}
}
output{
elasticsearch {
hosts => ["39.107.247.46:9200"]
index => "applog"
}
stdout { codec => rubydebug }
}
docker run -d logstash:latest 后台运行镜像,去掉-d,就是前台运行镜像
-p A:B 把容器内部的B端口暴露成A端口供外界访问
-v A.conf:B.conf把外部的A.conf挂载到容器内部的B.conf上
–link elasticsearch:elasticsearch docker外部的容器连接到内部容器【不要这个output里的es必须要和外面的es容器的名字一样】
–name logstash 容器名叫啥
logstash -f /etc/logstash.conf 使用logstash的-f强制使用/etc/logstash.conf文件
logback-spring.xml里的配置
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>39.107.247.46:4560destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
appender>
docker pull kibana:5.6.11
docker run --name kibana -e ELASTICSEARCH_URL=http://39.107.247.46:9200 -p 5601:5601 -d kibana:5.6.11