–
准备三个节点 系统版本为: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,可看到已经搭建好的节点信息:
问题: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的一个节点进程没了,要监控好
–
–
–
评论前必须登录!
注册