首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Opensearch2.14.0集群安装指引

Opensearch2.14.0集群安装指引

原创
作者头像
空洞的盒子
发布2024-11-21 11:57:32
发布2024-11-21 11:57:32
1.7K10
代码可运行
举报
文章被收录于专栏:JD的专栏JD的专栏
运行总次数:0
代码可运行

OpenSearch简介

OpenSearch是一个开源的搜索和分析平台,基于 Elasticsearch和 Kibana的开源版本(7.10.2 之前)开发。它由 Amazon Web Services (AWS) 主导,旨在为用户提供高性能、可扩展和安全的搜索与分析解决方案。OpenSearch被广泛应用于日志分析、实时数据可视化、全文本搜索和应用程序监控等场景。

版本环境

  • Opensearch 2.14.0
  • Opensearch Dashboards 2.14.0
  • Ubuntu 64bit

安装步骤

一.安装包下载

这里我们使用TarBall的方式进行安装部署。

https://artifacts.opensearch.org/releases/bundle/opensearch/2.14.0/opensearch-2.14.0-linux-x64.tar.gz

https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.14.0/opensearch-dashboards-2.14.0-linux-x64.tar.gz

二.解压

代码语言:bash
复制
# 进入安装目录对压缩包进行解压
cd /data
tar -zxvf opensearch-2.14.0-linux-x64.tar.gz

三.用户与用户组创建

代码语言:bash
复制
useradd opensearch
groupadd opensearch
usermod -a -G opensearch opensearch

四.JVM配置文件修改

代码语言:bash
复制
# opensearch的配置文件均在config目录下
cd /data/opensearch-2.14.0/config
# 编辑jvm.options
vi jvm.options
# 根据机器内存资源调整JVM堆内存额度,修改以下内容
-Xms32g
-Xmx32g
# 保存退出
:wq

五.Admin账户密码配置

代码语言:bash
复制
# 根据实际需要设置
export OPENSEARCH_INITIAL_ADMIN_PASSWORD=password

六.生成SSL证书

1.生成root CA证书

生成Root证书作为其他证书的根证书。

代码语言:bash
复制
openssl genrsa -out root-ca-key.pem 2048
openssl req -x509 -new -nodes -key root-ca-key.pem -sha256 -days 3650 -out root-ca.pem \
  -subj "/C=CA/ST=State/L=City/O=MyOrg/OU=MyUnit/CN=RootCA"

2.生成admin证书

在Opensearch中admin账户为超级管理员账户。

admin证书主要用于获取在集群中执行安全插件相关的高级权限。

代码语言:javascript
代码运行次数:0
运行
复制
openssl genrsa -out admin-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730

3.生成Node证书

在当前环境中,共有3个节点,所以我们需要为每一个节点进行证书的生成。

注:由于Opensearch的证书内部校验极为复杂,为了避免在集群启动时由于subjectAltName校验不一致而导致的各类证书启动问题的出现,例如证书未知,证书不识别,证书读取失败,节点无法连接等问题。;建议在一台机器上基于root-ca.pem为所有的节点进行证书的生成。

在Node证书生成后,将相应节点的node.pem与node-key.pem复制到相应节点即可。同时将证书权限设置为opensearch账户。避免由于权限问题导致证书无法读取。

subj与subjectAltName在设置时需要注意,建议设置为主机名,避免证书在识别时hostname与IP address无法匹配导致启动服务失败。

代码语言:bash
复制
# Node cert 1
openssl genrsa -out Node1-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node1-key.pem
openssl req -new -key Node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=DATA-01" -out Node1.csr
echo 'subjectAltName=DNS:Node1' > Node1.ext
openssl x509 -req -in Node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node1.pem -days 730 -extfile Node1.ext
# Node cert 2
openssl genrsa -out Node2-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node2-key.pem
openssl req -new -key Node2-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=Node2" -out Node2.csr
echo 'subjectAltName=DNS:Node2' > DATA-02.ext
openssl x509 -req -in Node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node2.pem -days 730 -extfile Node2.ext
# Node cert 3
openssl genrsa -out Node3-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in Node3-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out Node3-key.pem
openssl req -new -key Node3-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=Node3" -out Node3.csr
echo 'subjectAltName=DNS:Node3' > Node3.ext
openssl x509 -req -in Node3.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out Node3.pem -days 730 -extfile Node3.ext

①subj参数说明

  • CN=Node1:Common Name,通常是证书的主机名或某个标识符。
  • OU=UNIT:Organizational Unit,表示组织单元。
  • O=ORG:Organization Name,表示组织名称。
  • L=TORONTO:Locality,表示地理位置(城市)。
  • ST=ONTARIO:State or Province,表示州或省份。
  • C=CA:Country,表示国家代码。

4.生成client证书

代码语言:bash
复制
openssl genrsa -out client-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in client-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out client-key.pem
openssl req -new -key client-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=client" -out client.csr
echo 'subjectAltName=DNS:client' > client.ext
openssl x509 -req -in client.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out client.pem -days 730 -extfile client.ext

七.opensearh.yml修改

代码语言:yml
复制
# 进入config目录
cd /data/opensearch-2.14.0/config
# 编辑opensearch.yml
vi opensearch.yml
# 修改以下部分

cluster.name: test-opensearch
node.name: Node1
path.data: /data/opensearchdata
path.logs: /var/log/opensearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["NodeIP1", "NodeIP2", "NodeIP3"]
cluster.initial_cluster_manager_nodes: ["Node1", "Node2"]
node.roles: [cluster_manager, data, ingest]
plugins.security.disabled: false
plugins.security.ssl.transport.pemtrustedcas_filepath: /data/opensearch-2.14.0/config/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /data/opensearch-2.14.0/config/Node1.pem
plugins.security.ssl.transport.pemkey_filepath: /data/opensearch-2.14.0/config/Node1-key.pem
plugins.security.ssl.http.pemcert_filepath: /data/opensearch-2.14.0/config/Node1.pem
plugins.security.ssl.http.pemkey_filepath: /data/opensearch-2.14.0/config/Node1-key.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemtrustedcas_filepath: /data/opensearch-2.14.0/config/root-ca.pem
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.authcz.admin_dn:
  - "CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"  
plugins.security.nodes_dn:
  - "CN=Node1,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
  - "CN=Node2,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
  - "CN=Node3,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
transport.port: 9300
cluster.initial_master_nodes: ["Node1", "Node2"]
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false 

①opensearch.yml修改注意事项

  • cluster.name:所有节点的集群名称需保持一致,避免集群启动后,找不到配置文件中配置的节点。在初始化安全配置时,也会校验集群名称。
  • node.roles:在2.14版本的角色中,引入了cluster_manager概念,将master角色升级为了cluster_manager。负责集群统一的引导与管理。
  • plugins.security.nodes_dn:需要再每个节点的配置文件中配置所有节点的nodes_dn信息。

八.oepnsearch目录及文件用户与用户组修改

由于Opensearch不允许以Root账户启动,所以我们需要使用Opensearch账户进行启动,为了避免因权限问题导致的启动失败,我们还需要对Opensearch目录及文件进行相应的账户授权操作。

代码语言:bash
复制
chown -R opensearch:opensearch /path/to/opensearch

九.启动Opensearch集群

这里我们直接将Opensearch服务注册为系统服务,使用systemctl进行管理。

代码语言:bash
复制
# 创建opensearch.service文件
vi /etc/systemd/system/opensearch.service

# 添加以下内容
[Unit]
Description=OpenSearch
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
RuntimeDirectory=data

WorkingDirectory=/data/opensearch-2.14.0
ExecStart=/data/opensearch-2.14.0/bin/opensearch -d

User=opensearch
Group=opensearch
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65535
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
TimeoutStartSec=75

[Install]
WantedBy=multi-user.target

# 重新加载systemctl服务
systemctl daemon-reload
# 开启opensearch.service服务
systemctl enable opensearch.service
# 启动Opensearch
systemctl start opensearch
# 查看Opensearch状态
systemctl status opensearch

启动后,如图所示:

十.初始化安全插件配置

Opensearch集群启动后,在使用之前还需要初始化security相关插件与功能之后才可以正常使用。

初始化脚本存放于/path/to/opensearch/plugins/opensearch-security/tools/目录。

代码语言:bash
复制
# 修改相关脚本权限
chmod 755 /path/to/opensearch-2.14.0/plugins/opensearch-security/tools/*.sh
# 进入Opensearch目录
cd /path/to/opensearch  
# 进行  ecurity权限初始化
./plugins/opensearch-security/tools/securityadmin.sh \
  -arc \
  -h NodeIP \
  -cd /data/opensearch-2.14.0/config/opensearch-security/ \
  -icl \
  -key /data/opensearch-2.14.0/config/admin-key.pem \
  -cert /data/opensearch-2.14.0/config/admin.pem \
  -cacert /data/opensearch-2.14.0/config/root-ca.pem \
  -nhnv 
参数说明:
  • -arc:accept red cluster 接收集群Red时进行初始化操作。
  • -icl:忽略强制校验集群名称
  • -nhnv:忽略强制校验主机名。
  • -h:指定节点IP。默认连接127.0.0.1:9200

十一.配置账号密码

代码语言:javascript
代码运行次数:0
运行
复制
# 调用脚本时声明一个环境变量以避免出现问题
OPENSEARCH_JAVA_HOME=/path/to/opensearch-2.14.0/jdk ./hash.sh
# 在提示符下输入所需的密码并记下输出哈希值。
# 打开internal_users.yml
vi /path/to/opensearch-2.14.0/config/opensearch-security/internal_users.yml
# 在admin账户部分,并将哈希替换为上一步中提供的输出hash.sh。
admin:
   hash: "$2y$1EXAMPLEQqwS8TUcoEXAMPLEeZ3lEHvkEXAMPLERqjyh1icEXAMPLE."
   reserved: true
   backend_roles:
   - "admin"
   description: "Admin user"
# 修改后重启Opensearch服务
systemctl restart opensearch.service

十二.访问测试

代码语言:bash
复制
curl https://IP:9200 -u admin:password -k

返回结果如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenSearch简介
  • 版本环境
  • 安装步骤
    • 一.安装包下载
    • 二.解压
    • 三.用户与用户组创建
    • 四.JVM配置文件修改
    • 五.Admin账户密码配置
    • 六.生成SSL证书
      • 1.生成root CA证书
    • 2.生成admin证书
    • 3.生成Node证书
      • ①subj参数说明
    • 4.生成client证书
    • 七.opensearh.yml修改
      • ①opensearch.yml修改注意事项
    • 八.oepnsearch目录及文件用户与用户组修改
    • 九.启动Opensearch集群
    • 十.初始化安全插件配置
    • 十一.配置账号密码
    • 十二.访问测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档