INSTALLATION AND CONFIGURATION
集群安装和配置
GOAL: Secure a cluster and an index using Elasticsearch Security
目标:用ES的安全模块保护集群和索引
REQUIRED SETUP
第0题,按要求创建集群
- a running Elasticsearch cluster with at least one node and a Kibana instance
- 创建一个最少拥有1个ES节点1个Kibana节点的集群
- no index with name
hamlet
is indexed on the cluster- 在集群中没有叫
hamlet
的索引
- 在集群中没有叫
第0题,题解
- 初始化集群
- rpm/命令 方式
sh $ES_HOME/bin/elasticsearch -d
sh $KIBANA_HOME/bin kibana
systemctl start elasticsearch.server
systemctl start kibana.server
- docker 方式
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.2.1 -d
docker-compose -f 1e1k_base_cluster.yml up -d --build
- 参考链接和页面路径不贴了,根据前人的经验,这题可能会出现某些节点没启动,配合
elasticsearch.yml
等配置文件的检查做就好。
- rpm/命令 方式
- 清理索引
- 在kibana里运行
DELETE hamlet
- 在命令行里运行
curl -X DELETE http://localhost:9200/hamlet
- 参考链接
- 页面路径:Indices APIS =》 Delete index
- 在kibana里运行
第0题,题解说明
- 这题没什么特别需要说明的,创建和启动集群前一章已经讲过了,这里主要需要注意的是kibana的配置和进程
- 配置:
- kibana的配置中需要添加
elasticsearch.hosts: ["http://localhost:9200",]
。由于kibana是一个前端项目,所以这里需要一个完整的可以被前端访问的url才行。 - 当ES开启了认证之后,kibana中需要添加针对
kibana
这个账户的账号密码(通过ES自带工具生成或指定),以保证kibana实体可以连接到ES节点,但是在登录kibana页面的时候需要填写的是elastic
这个账户的账号密码。
- kibana的配置中需要添加
- 进程:
- kibana是通过nodejs启动的,所以通过命令
ps -ef | grep kibana
是找不到他的进程的,正确的做法是通过lsof -i:5601
找到监听5601(或者其他指定的kibana监听端口的进程),然后通过进程 pid 来找。 - 7.x 的kibana的进程多半会长得类似
./../node/bin/node ./../src/cli
- kibana是通过nodejs启动的,所以通过命令
- 配置:
第1题,配置集群安全
- Enable xPack security on the cluster
- 开启x-pack保护集群
- Set the password of the
elastic
andkibana
built-in users. Use the pattern “{ {username}}-password” (e.g., “elastic-password”)- 以"{
{username}}-password"为模板,给
elastic
和kibana
等内置账户设置密码
- 以"{
{username}}-password"为模板,给
- Login to Kibana using the
elastic
user credentials- 用
elastic
的认证信息登录 kibana
- 用
第1题,题解
- 修改配置文件
$ES_HOME/config/elasticsearch.yml
- 添加
xpack.security.enabled: true
- 有的时候可能启动报错,还需要添加配套的
xpack.security.transport.ssl.enabled=true
- 添加
- 在ES安装目录里(包含bin目录的那个)运行
bin/elasticsearch-setup-passwords interactive
给用户设置密码- docker 运行的同学先要通过
docker exec -it elasticsearch bash
登录到docker实例里面,然后再执行 - 物理机部署的同学直接进入
$ES_HOME
就好
- docker 运行的同学先要通过
第1题,题解说明
- 这题分两个部分,开启验证和设置密码
第2题,添加数据
We are now going to use the _bulk API to index some documents into the cluster. The documents are lines from Hamlet by William Shakespeare, and have the following structure:
- 来让我们通过bulk API把莎士比亚写的一些哈姆雷特第句子存到ES里,数据结构如下
{
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
- Let’s continue with the exercise.
- Create the index
hamlet
and add some documents by running the following _bulk command: - 通过下面一些bulk的命令把哈姆雷特的句子存进ES(这些命令基本上得在kibana里执行,因为他们不是正常的curl命令)
PUT hamlet/_bulk { "index":{ "_index":"hamlet","_id":0}} { "line_number":"1","speaker":"BERNARDO","text_entry":"Whos there?"} { "index":{ "_index":"hamlet","_id":1}} { "line_number":"2","speaker":"FRANCISCO","text_entry":"Nay, answer me: stand, and unfold yourself."} { "index":{ "_index"</
- Create the index