标签归档:集群

Elasticsearch Kibana 集群 安装配置 X-pack 扩展包

X-pack概述:

X-pack 是一种 Elastic Stack 扩展包,它将安全性、警报、监视、报告和图形功能打包成一个易于安装的包。X-pack可以无缝协同ElasticSearch、 Kibana工作,它可以很好的启用或禁用您要使用的功能。

Elasticsearch 5.0之前,您必须单独安装Shield,Watcher和Marvel插件才能获得在X-Pack中所有的功能。随着X-Pack出现您不再需要担心是否拥有每个插件的正确版本,只需安装您正在运行的Elasticsearch、Kibana版本的X-Pack就可以了。

X-pack安装相对简单很多,下面我将详细介绍。

先决条件:

安装配置 Elasticsearch 搜索引擎集群
ElasticSearch 之 Kibana 二进制安装配置

:您必须运行和ElasticSearch、Kibana版本相匹配的X-Pack版本。

说明:

由于我是集群分布式,所以需要在每台Kibana、ElasticSearch集群服务器上安装X-pack。如果你是单机模式,只需要在单台服务器安装X-pack即可。另外我采用的是网络安装。

1.在 Kibana 服务器安装 X-Pack

全程自动完成安装无需配置,在kibana中安装X-pack时间较久,慢慢等待吧。

直接进入kibana安装目录执行以下命令:

$ cd /usr/local/kibana
$ bin/kibana-plugin install x-pack
Found previous install attempt. Deleting...
Attempting to transfer from x-pack
Attempting to transfer from //artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.6.3.zip
Transferring 119526941 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

安装完成。

2.如果卸载请执行以下命令

$ bin/kibana-plugin remove x-pack

3.在 Elasticsearch 服务器安装 X-Pack

全程自动完成安装也无需配置,这个速度很快。

进入elasticsearch安装目录执行以下命令开始安装:
$ cd /usr/local/elasticsearch
$ bin/elasticsearch-plugin install x-pack
-> Downloading x-pack from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission \\.\pipe\* read,write
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
* java.util.PropertyPermission sun.nio.ch.bugLevel write
* javax.net.ssl.SSLPermission setHostnameVerifier
See //docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin forks a native controller @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
This plugin launches a native controller that is not subject to the Java
security manager nor to system call filters.

Continue with installation? [y/N]y
-> Installed x-pack

注意:中途会让你输入两次 Y 表示确认安装。

最后安装完成。

4.如果卸载请执行如下命令

$ bin/elasticsearch-plugin remove x-pack

5.重启服务

$ systemctl restart elasticsearch
$ systemctl restart kibana

重启完成后你就可以通过 //10.28.204.65:5601 进行管理。默认登录账号是:elastic 密码是:changeme

登录后点击 Monitoring 可查看 Elasticsearch 和 Kibana 集群信息,再进一步可以查看监控图表信息。此外还可以进行账户设置等,我就不上图了。

6.许可证管理

初次安装X-Pack提供30天的试用许可证,允许使用X-Pack所有功能。但试用期结束后,将禁用其所有功能,所以我们需要申请订阅免费的许可证(当然你也可以购买企业许可证)。

7.更新许可证

申请完许可证后会通过邮箱发你一封邮件,下载对应的 json 文件即可,许可证作为您使用 API 安装的JSON文件提供license,你可以将其上传到服务器/tmp目录。

然后执行以下命令:

$ curl -XPUT -u elastic '//10.28.204.65:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @/tmp/license.json

许可证更新成功后是1年有效期,在订阅的时候有说明。

接下来你就愉快的玩耍吧。

Nginx 集群负载均衡器:NFS文件存储共享安装配置优化篇

上一篇文章中介绍了《Nginx 1.3 集群负载均衡 反向代理安装配置优化》这篇重点写文件存储(File Storage)过程。

10.10.204.62 Load Balancing
10.10.204.63 Nginx Web server
10.10.204.64 Nginx Web server
10.10.204.65 File Storage

1.File Storage 服务器安装

yum -y install nfs-utils

2.配置NFS并创建共享目录

# mkdir -p /Data/webapp
# vim /etc/exports

/Data/webapp 10.10.204.0/24(rw,sync,no_subtree_check,no_root_squash)

3.开启自启动

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs

4.相关参数:

rw:read-write:可读写; ro:read-only,只读; sync:文件同时写入硬盘和内存。
no_root_squash:来访的root用户保持root帐号权限;显然开启这项是不安全的。
root_squash:将来访的root用户映射为匿名用户或用户组;通常它将使用nobody或nfsnobody身份。
all_squash:所有访问用户都映射为匿名用户或用户组;
anonuid:匿名用户的UID值,可以在此处自行设定。 anongid:匿名用户的GID值。
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性。
async:文件暂存于内存,而不是直接写入内存。
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。

5.File Storage 服务器防火墙配置

# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --reload

6.Nginx Web server 服务器安装以及挂载

# yum -y install nfs-utils
# mkdir -p /Data/webapp
# mount -t nfs 10.10.204.65:/Data/webapp /Data/webapp

7.如果需要开机自动挂载,在该文件最下方添加一行即可

# vim /etc/fstab

10.10.204.65:/Data/webapp /Data/webapp nfs auto,rw,vers=3,hard,intr,tcp,rsize=32768,wsize=32768 0 0

 

8.Nginx Web server 服务器测试

连续写16384个16KB的块到nfs目录下的testfile文件

# time dd if=/dev/zero of=/Data/webapp/testfile bs=16k count=16384

  16384+0 records in
  16384+0 records out
  268435456 bytes (268 MB) copied, 2.89525 s, 92.7 MB/s
  real 0m2.944s
  user 0m0.015s
  sys 0m0.579s

测试读的性能

# time dd if=/nfsfolder/testfile of=/dev/null bs=16k

  16384+0 records in
  16384+0 records out
  268435456 bytes (268 MB) copied, 0.132925 s, 2.0 GB/s
  real 0m0.138s
  user 0m0.003s
  sys 0m0.127s

综合来讲,NFS的速度还算理想。如果觉得速度慢,那么添加相关参数后,反复挂载卸载并测试读写,找到适合自己的配置方案。

Redis 缓存 PHP 7.2 session 变量共享

一般负载均衡内容有两种形式,一种是静态,另一种是动态,动态网站内容就可能需要进行交互,那么就涉及到session共享的问题。默认PHP是将session存储在LocalDisk,如果是多台php主机之间进行负载,那么该如何共享session?今天我们就解决这个问题。

session会话共享文件有很多种方式:

分布式文件共享;NFS,NAS文件存储等。
Nginx负载均衡ip_hash模块,固定访客到后端某台服务器。
将session存储到数据库中;例如MySQL,Memcached,Redis,Mongodb等。

我个人比较倾向于将session存储到Redis数据库,用这种方式来同步session共享,不仅不会加大数据库的负担,而且安全性比cookie更高,把session放到内存里面,比从磁盘文件中读取会快很多。“有人认为;那我把所有的缓存软件都安装,速度岂不是更快,那就不是缓存加速了,而演变成了缓存库了”。

php语言脚本默认不支持对Redis的操作,所以需要安装第三方phpRedis扩展模块,让其支持对Redis的操作,至于如何安装使用phpRedis,可以参考我前面写的文章《phpRedis扩展模块安装配置使用》。此外这里还需要一台Redis服务器,请参阅《Linux Centos7 Redis 3.2.9 源码编译安装配置》。

1.修改PHP配置文件php.ini将session存储到Redis中。

# vim /usr/local/php/etc/php.ini

session.save_handler = files
;session.save_path = "N;/path"

修改为:

session.save_handler = Redis
session.save_path = “tcp://10.10.204.66:6379”

;如果Redis有密码连接方式
session.save_path = “tcp://10.10.204.66:6379?auth=password”

 

2.重启php-fpm服务生效

# systemctl restart php-fpm

以上所有过程均是经过手工测试的,99%可用于生产。