本地环境搭建
环境需求
笔记本电脑的软硬件需求如下。
硬件配置:
- 8GB内存
- i5 及更高 CPU
- SSD硬盘
- Wifi/有线网络
软件配置:
- MacOS、Windows 或者 Linux 操作系统都可以
- SSH终端登录软件,例如 iTerm2、Terminal、 cmder for Windows 10
- VirtualBox 6.0 用于运行实验环境的虚拟机
- 操作系统环境 CentOS 8, 用于安装和运行 Elastic 产品
- 推荐虚拟机资源配置( 1 台 )
- CPU - 1 Core
- RAM - 2 GB
- 硬盘 - 80 GB
- 网络 - NAT,host-only
- 操作系统 root/vagrant 用户的密码
以上虚拟机可以手工安装,也可以用 vagrant 的方式一键式安装。如果在你的虚拟机软件中,没有现成的满足以上需求的可用的虚拟机,推荐使用下面的一键式虚拟机环境安装方法。
用 Vagrant 准备虚拟机
使用下面的 Vagrantfile
文件创建测试用虚拟机。
见代码库:https://github.com/DevOps-Coach/elasticstack
文件名:Vagrantfile1 文件内容如下:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# boxes at https://atlas.hashicorp.com/search.
BOX_IMAGE = "bento/centos-8"
MA_COUNT = 1
Vagrant.configure("2") do |config|
#设置所有 guest 使用相同的静态 dns 解析 /etc/hosts
config.vm.provision :hosts, :sync_hosts => true
#设置所有虚拟机的操作系统
config.vm.box = BOX_IMAGE
#用 vagrant 默认密钥对 ssh 登录
config.ssh.insert_key = false
# 用于部署 Elasticsearch 服务器的集群 : 单节点、三节点对等、三节点专用 master
(1..MA_COUNT).each do |i|
config.vm.define "ma#{i}" do |ma_config|
ma_config.vm.hostname = "ma#{i}.zenlab.local"
ma_config.vm.network :private_network, ip: "192.168.50.#{i + 10}"
ma_config.vm.provider :virtualbox do |vb|
vb.memory = 2048
vb.cpus = 1
end
ma_config.vm.provision :shell, path: "es-m1.sh"
end
end
end
Vagrantfile 调用的 Elasticsearch 部署脚本 es-1m.sh
文件内容如下:
#!/bin/bash
# author: Martin Liu
# url: martinliu.cn
#指定安装的版本
elastic_version='7.9.0'
#开始安装流程
echo "Provisioning a Elasticsearch "$elastic_version" Server..."
sudo date > /etc/vagrant_provisioned_at
#配置 ES 需要的操作系统参数
sudo swapoff -a
sudo sysctl -w vm.max_map_count=262144
sudo sysctl -p
sudo sh -c "echo 'elasticsearch - nofile 65535' >> /etc/security/limits.conf"
#设置个性化 SSH 登录提示信息
sudo sh -c "echo '**** -- -- -- -- -- -- -- -- ****' > /etc/motd"
sudo sh -c "echo '**** Welcome to Elastic Stack Labs' >> /etc/motd"
sudo sh -c "echo '**** -- -- -- -- -- -- -- -- ****' >> /etc/motd"
sudo sh -c "echo '*' >> /etc/motd"
#安装 ES 软件包
sudo rpm -ivh /vagrant/rpm/elasticsearch-$elastic_version-x86_64.rpm
#更新 ES 默认的配置文件
#sudo cp /vagrant/jvm.options.256m /etc/elasticsearch/jvm.options
sudo cp /vagrant/es-m1.yml /etc/elasticsearch/elasticsearch.yml
#配置和启动 ES 系统服务
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
sudo systemctl status elasticsearch
es-m1.sh
需要的 Elasticsearch 服务器配置文件 es-m1.yml
文件内容如下:
#默认值是 elasticsearch
cluster.name: single-node-cluster
#设置成单一节点模式
discovery.type: single-node
#设定 es 服务器数据目录
path.data: /var/lib/elasticsearch
#设定 es 服务器日志目录
path.logs: /var/log/elasticsearch
#Elasticsearc 服务器提供的 IP,域名和端口设置
#下面的是 eth1 网卡的任何 ip
network.host: _eth1_
确定虚拟机的IP地址
如果你安装CentOS 7操作系统时,使用了静态ip地址,请依然用下面的步骤再次确认ip地址正确且可以链接。
登录虚拟机的控制台后,使用的命令 ip add s
确认虚拟机的Ip地址。如下图所示:
记录虚拟机的Ip地址备用。
设置VirtualBox网络端口转发
确保笔记本电脑和虚拟机的网络端口可连接。增加3条端口转发规则。如下图所示:
测试从笔记本电脑的操作系统ssh登录到虚拟操作系统。
~ ssh root@127.0.0.1 -p 2233
Last login: Mon Sep 9 19:29:26 2019 from 10.0.2.2
[root@bogon ~]#
设置虚拟机主机名 hostnamectl set-hostname node-1 --static
, 在/etc/hosts 文件配置本机 主机名 dns 解析。
[root@bogon config]# hostnamectl set-hostname node-1 --static
[root@bogon config]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.15 node-1
确保 root 用户能正常ssh登录虚拟机操作系统。
导入elasticsearch和kibana安装包文件
使用scp命令或者同等软件将rpm安装包上传到练习虚拟机中。
scp -P 2233 elasticsearch-7.3.2-x86_64.rpm root@127.0.0.1:/root/
scp -P 2233 kibana-7.3.2-x86_64.rpm root@127.0.0.1:/root/
安装 Elasticsearch
登录虚拟机操作系统执行安装 rpm -ivh elasticsearch-7.3.2-x86_64.rpm
命令,并启动服务和关闭防火墙服务。
~ ssh root@127.0.0.1 -p 2233
Last login: Thu Sep 19 18:57:31 2019 from 10.0.2.2
[root@node-1 ~]# ls
anaconda-ks.cfg elasticsearch-7.3.2-x86_64.rpm
[root@node-1 ~]# rpm -ivh elasticsearch-7.3.2-x86_64.rpm
warning: elasticsearch-7.3.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
1:elasticsearch-0:7.3.2-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch
[root@node-1 ~]#
[root@node-1 ~]# systemctl stop firewalld
[root@node-1 ~]# systemctl disable firewalld
配置 Elasticsearch 服务器参数, vi /etc/elasticsearch/elasticsearch.yml
确保配置文件中有如下四行配置。
cluster.name: my-elk
node.name: node-1
network.host: 0.0.0.0
cluster.initial_master_nodes: node-1
用命令 systemctl start elasticsearch
启动 Elasticsearch 服务器
在虚拟机的命令行验证服务 curl http://127.0.0.1:9200
[root@node-1 ~]# systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@node-1 ~]# systemctl start elasticsearch
[root@node-1 ~]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-09-19 19:55:48 CST; 1h 34min ago
Docs: http://www.elastic.co
Main PID: 12869 (java)
CGroup: /system.slice/elasticsearch.service
├─12869 /usr/share/elasticsearch/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:C...
└─12948 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Sep 19 19:55:48 node-1 systemd[1]: Stopped Elasticsearch.
Sep 19 19:55:48 node-1 systemd[1]: Started Elasticsearch.
Sep 19 19:55:49 node-1 elasticsearch[12869]: OpenJDK 64-Bit Server VM warning: Option UseConcMark...se.
Hint: Some lines were ellipsized, use -l to show in full.
[root@node-1 ~]# curl 127.0.0.1:9200
{
"name" : "node-1",
"cluster_name" : "my-elk",
"cluster_uuid" : "IMvIAEvNTBmlYINm_iI5bA",
"version" : {
"number" : "7.3.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "1c1faf1",
"build_date" : "2019-09-06T14:40:30.409026Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
在笔记本电脑的浏览器里输入网址 http://127.0.0.1:9200
验证 Elasticsearch 服务是否可以访问。
- 在虚拟机操作系统的命令行里 curl 127.0.0.1:9200 正常返回
- 在笔记本电脑的浏览器里 http://127.0.0.1:9200 能看到与上面相同的信息
安装 Kibana
执行Kibana 服务器安装命令 rpm -ivh kibana-7.3.2-x86_64.rpm
[root@node-1 ~]# rpm -ivh kibana-7.3.2-x86_64.rpm
warning: kibana-7.3.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:kibana-7.3.2-1 ################################# [100%]
[root@node-1 ~]#
确保 Kibana 配置文件 vi /etc/kibana/kibana.yml
中有下面几行参数:
server.host: "10.0.2.15"
server.name: "node-1"
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"
在本机的浏览器访问 Kibana 服务器。选择使用 我们的样例数据
。
添加三组样例数据。
点击左侧导航栏的仪表板按钮,看到如下仪表板清单。
笔记本电脑的浏览器可以正常访问 Kibana 服务器。
- Elasticsearch 服务器没有开启默认的用户名和密码的安全认证模式,在生产环境中是完全不可取的。
- 以上的网络配置和各种服务器配置也是精简版本的,仅限于课堂学习,生产环境的服务器配置需要按照实际情况设计。