本地环境搭建

环境需求

笔记本电脑的软硬件需求如下。

硬件配置:

软件配置:

以上虚拟机可以手工安装,也可以用 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条端口转发规则。如下图所示:

9591568016572_.pic_hd

测试从笔记本电脑的操作系统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 服务是否可以访问。

  1. 在虚拟机操作系统的命令行里 curl 127.0.0.1:9200 正常返回
  2. 在笔记本电脑的浏览器里 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 服务器。选择使用 我们的样例数据 9571568015382_.pic_hd

添加三组样例数据。

9581568015418_.pic_hd

点击左侧导航栏的仪表板按钮,看到如下仪表板清单。

笔记本电脑的浏览器可以正常访问 Kibana 服务器。

  • Elasticsearch 服务器没有开启默认的用户名和密码的安全认证模式,在生产环境中是完全不可取的。
  • 以上的网络配置和各种服务器配置也是精简版本的,仅限于课堂学习,生产环境的服务器配置需要按照实际情况设计。