elasticsearch 배포
5163 단어 Elasticsearch
프로세스 관리 도구를 사용하여 ES를 실행하는 것을 추천합니다. 여기에서supervisor를 사용하여es를supervisor의 하위 프로세스로 실행합니다.
supervisord 구성
[supervisord]
; ....
nodaemon=false ; (start in foreground if true;default false)
[program:elk_01]
directory=/yikaoyan/elasticsearch-7.2.1
command=/usr/bin/bash bin/elasticsearch
user=elk ; ,ES root
위의
nodaemon=false
true라면, 시스템 ctl 명령을 통해supervisord 서비스를 시작할 수 없습니다.설치 및 설치
supervisord
서비스 시작systemctl enable supervisord //
전원을 켜고 시작할 수 있도록 허용하면
/lib/systemd/system
디렉터리에서 supervisord.service
파일을 생성합니다. 이 파일을 편집하면 슈퍼visord의 시작 명령을 편집할 수 있습니다. 여기서 슈퍼visor의 프로필 디렉터리를 다시 만듭니다.[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
구성 파일을 수정할 때마다 (이 파일과 supervisord.conf 수정 포함) 다음 명령을 통해 다시 불러온 후 서비스를 시작해야 합니다.
systemctl daemon-reload
systemctl start supervisord
이렇게 하면 슈퍼visord를 시작할 때마다 ES를 자동으로 실행할 수 있다
ES 비 root 사용자 실행 문제
es 기본값은 루트로 실행할 수 없습니다. 사용자를 추가하고 이 사용자에게 es 디렉터리에 대한 조작 권한을 부여함으로써 해결할 수 있습니다.
#
useadd elk
# es
chown -R elk:elk elasticsearch-folder
##ES 인증 및 NGINX
es는 기본적으로 인증이 없습니다. 권한이 부여되지 않은 접근 빈틈의 위험이 있습니다.상업 세트 x-pack에서 인증 기능을 제공하지만 권한을 부여해야 하며 시험적으로 사용한 지 한 달밖에 되지 않습니다.또한 ES도 제3자 플러그인search-guard가 안전 기능을 제공하지만 생산 환경에서 설정이 비교적 복잡하다.여기에서 나는nginx의
Http Basic Authentication
를 사용하여 인증 기능(홈페이지 문서 참조)을 하고nginx를 이용하여 검색 요청을 포트를 통해 es에게 전송한다.다음은 내 nginx 구성 참조입니다.upstream elk {
server 127.0.0.1:9200;
}
server {
listen 8080; # 8080 , 9200
access_log /var/log/nginx/statistics_access.log;
client_max_body_size 4G;
fastcgi_buffers 64 8K;
client_body_buffer_size 1024k;
keepalive_timeout 5;
client_body_timeout 15;
client_header_timeout 15;
send_timeout 15;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
location / {
proxy_pass http://elk; # ,http://
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
#
auth_basic "auth required";
auth_basic_user_file /etc/nginx/conf.d/htpasswd/es;
}
}
보안을 위해 다음과 같은 두 가지 조치를 취합니다.
.../elasticsearch-7.2.1/config/elasticsearch.yml
, ES 바인딩은 네이티브 액세스만 가능:
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
#
# Set a custom port for HTTP:
#
# http.port: 9200
연결 ES
Kibana 접속 구성 수정:
# elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.hosts: ["http://xx.xx.xx.xxx:8080"]
# ...
# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
elasticsearch.username: "user"
elasticsearch.password: "pwd"
Python 클라이언트 연결:
ES_CLIENT = Elasticsearch(['http://user:[email protected]:8080'])
ES는 도메인 이름을 통한 액세스를 지원하지 않는 것으로 보이므로 IP 및 포트를 지정해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Embulk를 사용하여 ElasticCloud로 보내기Embulk에서 ElasticCloud에 보낼 수 있을까라고 생각비망록도 겸해 기술을 남깁니다 Embulk 설치 ElasticCloud (14 일 체험판) brew라면 아래 명령 입력 파일 만들기 파일 내용 seed...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.