OpenSearch setup with Docker Compose and Kamal Deploy
OpenSearch setup with Docker Compose and Kamal Deploy
Getting Started
Create Rails Application
Searchkick
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Searchkick.client = OpenSearch::Client.new(
host: ENV.fetch("OPEN_SEARCH_HOST", "https://blog-opensearch:9200"),
user: "admin",
password: ENV.fetch("OPENSEARCH_INITIAL_ADMIN_PASSWORD", "SamplePassword1!"),
retry_on_failure: true,
transport_options: {
ssl: {
verify: false
},
request: {
timeout: 250
}
}
)
Searchkick.index_prefix = Rails.application.class.module_parent_name.underscore
Docker Compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
---
services:
opensearch-node1:
image: opensearchproject/opensearch:latest
container_name: opensearch-node1
environment:
- cluster.name=opensearch-cluster
- node.name=opensearch-node1
- discovery.seed_hosts=opensearch-node1,opensearch-node2
- cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2
- bootstrap.memory_lock=true
- OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD}
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- ./certs:/usr/share/opensearch/config/certs
- opensearch-data1:/usr/share/opensearch/data
ports:
- 9200:9200
- 9600:9600
networks:
- opensearch-net
opensearch-node2:
image: opensearchproject/opensearch:latest
container_name: opensearch-node2
environment:
- cluster.name=opensearch-cluster
- node.name=opensearch-node2
- discovery.seed_hosts=opensearch-node1,opensearch-node2
- cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2
- bootstrap.memory_lock=true
- OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD}
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- ./certs:/usr/share/opensearch/config/certs
- opensearch-data2:/usr/share/opensearch/data
networks:
- opensearch-net
opensearch-dashboards:
image: opensearchproject/opensearch-dashboards:latest
container_name: opensearch-dashboards
ports:
- 5601:5601
expose:
- '5601'
environment:
OPENSEARCH_HOSTS: '["https://opensearch-node1:9200","https://opensearch-node2:9200"]'
networks:
- opensearch-net
volumes:
opensearch-data1:
opensearch-data2:
networks:
opensearch-net:
1
docker compose up -d
1
docker compose down
Kamal
1
2
3
4
5
6
7
8
9
10
11
accessories:
opensearch:
image: opensearchproject/opensearch:latest
host: 157.245.197.146
port: 9200
env:
clear:
discovery.type: single-node
OPENSEARCH_INITIAL_ADMIN_PASSWORD: SamplePassword1!
directories:
- data:/usr/share/opensearch/data
Conclusion
References
- https://youtu.be/uEv8qxQv7OM?si=oAhhnVjx2SY9p141
- https://github.com/Instadeploy/logging-opensearch
This post is licensed under CC BY 4.0 by the author.