容器技术 Docker 应用
一、Docker-compose Elastic Stack
1.配置
[root@elk ~]# mkdir elk
[root@elk ~]# cd elk/
[root@elk elk]# ls
docker-compose.yml
[root@elk elk]# vi docker-compose.yml
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es01
environment:
- node.name=es01
cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
"ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
rts:
- 9200:9200
tworks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es02
environment:
- node.name=es02
cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
"ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nproc: 65535
nofile: 65535
volumes:
- data02:/usr/share/elasticsearch/data
tworks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es03
environment:
- node.name=es03
cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
"ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nproc: 65535
nofile: 65535
volumes:
- data03:/usr/share/elasticsearch/data
tworks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
[root@elk elk]# free -h
total used free shared buff/cache available
Mem: 2.8G 351M 1.8G 9.5M 601M 2.3G
Swap: 2.0G 0B 2.0G
[root@elk elk]# docker stop `docker ps -qa`
97818382c41a
de03cb92ac93
2.内存映射
直接在这个文件内写入 /etc/sysctl.conf
[root@elk elk]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
[root@elk elk]# sysctl -p
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time = 120
vm.max_map_count = 262144
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
kernel.sysrq = 1
增加nofile
和nproc
的ulimit
docker run --rm centos:8 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'
3.启动
[root@elk elk]# docker-compose up
Creating network "elk_elastic" with driver "bridge"
Creating volume "elk_data01" with local driver
Creating volume "elk_data02" with local driver
Creating volume "elk_data03" with local driver
...
查看端口
[root@elk ~]# cd elk/
[root@elk elk]# ls
docker-compose.yml
[root@elk elk]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
es01 /tini -- /usr/local/bin/do ... Up 0.0.0.0:9200->9200/tcp, 9300/tcp
es02 /tini -- /usr/local/bin/do ... Up 9200/tcp, 9300/tcp
es03 /tini -- /usr/local/bin/do ... Up 9200/tcp, 9300/tcp
4.访问测试
[root@elk elk]# curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.27.0.3 29 97 22 0.81 1.22 2.01 cdhilmrstw - es02
172.27.0.4 49 97 23 0.81 1.22 2.01 cdhilmrstw - es01
172.27.0.2 35 97 23 0.81 1.22 2.01 cdhilmrstw * es03
[root@elk elk]# cat docker-compose.yml
version: '2.2'
services:
cerebro:
image: lmenezes/cerebro:0.8.4
container_name: cerebro
# 浏览器中访问宿主机的 9000 端口即可
# 访问到集群的信息
ports:
- "9000:9000"
mmand:
# 用于此容器访问elasticsearch 集群的节点 es01
- -Dhosts.0.host=http://es01:9200
tworks:
- elastic
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nproc: 65535
nofile: 65535
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nproc: 65535
nofile: 65535
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nproc: 65535
nofile: 65535
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
二、Docker-compose Logstash
docker run --rm -it -v ~/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:7.10.2
1.配置
默认文件路径:
管道配置文件:
/usr/share/logstash/pipeline/logstash.conf
配置文件:
/usr/share/logstash/config/logstash.yml