路漫漫其修远兮
吾将上下而求索

graylog配置:集群搭建

准备三个节点
系统版本为:centos7.2
graylog版本:2.5
机器ip如下:
192.168.2.121      graylogNode1
192.168.2.122      graylogNode2
192.168.2.123      graylogNode3


集群配置
集群配置包括三个部分:配置MongoDB副本集、配置Elasticsearch集群、Graylog多节点配置。
配置MongoDB副本集
(1)指定副本集名称,下面的操作每个节点都需要操作,操作前注意备份数据库,以防恢复使用。
更改每个节点上的MongoDB配置文件/etc/mongod.conf,将bindIp所在的行前加上#进行注释,replication部分添加replSetName: rs0,更改后的配置文件如下:

net:
  port: 27017
  bindIp: 0.0.0.0
  maxIncomingConnections: 65536
  ipv6: false

systemLog:
  verbosity: 0
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongodb.log

processManagement:
  fork: true 
  pidFilePath: /usr/local/mongodb/mongo.pid

storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
  mmapv1:
    smallFiles: true
  wiredTiger:
    engineConfig:
      configString : cache_size=2G

replication:
  replSetName: rs0

重启服务:
$service mongodb restart


(2)在集群中的一个节点上执行mongo命令行:
$ mongo

初始化副本集
使用本机hostname或IP加端口,如下
$ rs.initiate( {
    _id : "rs0",
    members: [ { _id : 0, host : "192.168.2.121:27017" } ]
 })

查看配置
rs.conf()

配置如下:
{
        "_id" : "rs0",
        "version" : 1,
        "protocolVersion" : NumberLong(1),
        "members" : [
                {
                        "_id" : 0,
                        "host" : "192.168.2.121:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("59ef0832a5da3378b1487f4e")
        }
}

向副本集中添加成员
rs0:PRIMARY> rs.add("192.168.2.122:27017")
{ "ok" : 1 }
rs0:PRIMARY> rs.add("192.168.2.123:27017")
{ "ok" : 1 }

查看添加完成之后的配置:
rs0:PRIMARY> rs.config()

查看状态
rs0:PRIMARY> rs.status()

创建graylog数据库,添加graylog用户
rs0:PRIMARY> use graylog
switched to db graylog
rs0:PRIMARY> db.createUser( {
 user: "graylog",
 pwd: "password",
 roles: [ { role: "readWrite", db: "graylog" } ]
 });
rs0:PRIMARY> db.grantRolesToUser( "graylog" , [ { role: "dbAdmin", db: "graylog" } ])
rs0:PRIMARY> show users
#测试使用这个账号密码能不能认证
rs0:PRIMARY> db.auth("graylog","password")


配置Elasticsearch集群
(1)修改每个节点的配置文件
$vim /etc/elasticsearch/elasticsearch.yml

需要更改的部分如下:
#es集群名称,每个节点中cluster.name要保持一致(建议名称为graylog)
cluster.name: graylog  
#节点名称
node.name: es-node-01
#当前节点IP
network.host: 192.168.2.121
#端口
http.port: 9200
#集群中的主机
discovery.zen.ping.unicast.hosts: ["192.168.2.121", "192.168.2.122", "192.168.2.123"]
#可发现的主节点
discovery.zen.minimum_master_nodes: 2

(2)重启服务
$service elasticsearch restart

(3)查看集群状态
$ curl 'http://192.168.2.121:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 80,
  "active_shards" : 80,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

(4)查看集群中的节点
$ curl 'http://192.168.2.121:9200/_cat/nodes?v'
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.2.122            4          96   4    0.01    0.04     0.12 mdi       -      es-node-02
192.168.2.121            4          96   5    0.03    0.04     0.06 mdi       *      es-node-01
192.168.2.123            4          97   6    0.04    0.18     0.20 mdi       -      es-node-03


Graylog多节点配置
打开配置文件进行编辑:
$vim /etc/graylog/server/server.conf

(1)设置master节点
本次环境是将192.168.2.121作为graylog主节点,因此在192.168.2.121上修改配置文件/etc/graylog/server/server.conf中is_master = true,其他两个节点的配置文件中设置为is_master = false。

(2)修改mongodb连接配置mongodb_uri
mongodb_uri = mongodb://graylog:password@192.168.2.121:27017,192.168.2.122:27017,192.168.2.123:27017/graylog?replicaSet=rs0

(3)修改elasticsearch连接配置elasticsearch_hosts
elasticsearch_hosts = http://192.168.2.121:9200,http://192.168.2.122:9200,http://192.168.2.123:9200

(4)开启web界面web_enable
web_enable = true

(5)修改web_listen_uri
#不同的节点不同的IP
web_listen_uri = http://192.168.2.121:9000/

(6)修改rest_listen_uri
#不同的节点不同的IP
rest_listen_uri = http://192.168.2.121:9000/api/


重启服务
$service graylog-server restart


创建负载均衡器,对graylog配置负载均衡
配置Nginx:
更改Nginx的配置文件
   server {
   listen       80;
   listen [::]:80 default_server ipv6only=on;
   server_name graylog.example.org;

   location / {
       proxy_set_header Host $http_host;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Graylog-Server-URL http://$server_name/api;
       proxy_pass http://graylog-web-cluster;
   }
}
    upstream graylog-web-cluster {
        server 192.168.2.121:9000 max_fails=3 fail_timeout=30s;
        server 192.168.2.122:9000 max_fails=3 fail_timeout=30s;
        server 192.168.2.123:9000 max_fails=3 fail_timeout=30s;
    }

重启服务:nginx -s reload
此时可以通过访问http://graylog.example.org/查看graylog,可看到已经搭建好的节点信息:

image.png

问题:node页面显示有两个节点总数一会有,一会没有,日志里面显示:[NodePingThread] Did not find meta info of this node. Re-registering.

解决:时钟必须同步,每分钟同步一次,Check your server clock! The time on all systems should be in sync!

参考文档

https://www.jianshu.com/p/6c88d749c725

https://severalnines.com/blog/high-availability-log-processing-graylog-mongodb-and-elasticsearch

https://my.oschina.net/u/3101282/blog/1837909  配置说明

https://www.jianshu.com/p/d5f0c2836421  配置说明

问题:

在node页面发现三个节点一会有,一会没有,很不稳定

解决:

查看时间是否同步,一分钟同步一次时间,很重要。在配置文件中设置 stale_master_timeout = 20000 各节点同步超时时间设长些

问题:

graylog日志显示:WARN  [RangeAssignor] No broker partitions consumed by consumer thread xxx

解决:

应该是kafka的分片少,在graylog的input里面将全局勾选去掉,每个input只选择一个节点来处理数据

问题:

在node页面显示处理日志速度很慢,延迟很高,发现实kafka的一个节点进程没了,要监控好

未经允许不得转载:江哥架构师笔记 » graylog配置:集群搭建

分享到:更多 ()

评论 抢沙发

评论前必须登录!