分类目录归档:OS

在Centos 7上安装配置 Apche Kafka 分布式消息系统集群

Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据。Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还具有更高的吞吐量。虽然它通常用作pub/sub消息传递系统,但许多组织也将其用于日志聚合,因为它为发布的消息提供持久存储。

您可以在一台服务器上部署Kafka,也可以构建一个分布式的Kafka集群来提高性能。本文介绍如何在多节点CentOS 7服务器实例上安装Apache Kafka。

先决条件:

欲安装kafka集群服务器,首先要安装以下组件:

Linux JAVA JDK JRE 环境变量安装与配置
在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

服务器列表:

10.10.204.63
10.10.204.64
10.10.204.65

1.安装

创建用户和组:

 # groupadd kafka
 # useradd -g kafka -s /sbin/nologin kafka

下载Kafka包:

 # cd /usr/local
 # wget //apache.fayea.com/kafka/0.10.2.1/kafka_2.10-0.10.2.1.tgz

解压创建软连接:

 # tar zxvf kafka_2.10-0.10.2.1.tgz
 # ln -s kafka_2.10-0.10.2.1 kafka

设置权限及创建Kafka日志存放目录:

 # chown -R kafka:kafka kafka_2.10-0.10.2.1 kafka
 # mkdir -p /usr/local/kafka/logs

添加系统变量:

编辑:/etc/profile 文件,在最下面添加以下内容:

 export KAFKA_HOME=/usr/local/kafka_2.10-0.10.2.1
 export PATH=$KAFKA_HOME/bin:$PATH

使变量生效:

 # source /etc/profile

2.配置

修改添加Kafka服务器的配置文件:

 # cd /usr/local/kafka/config
 # vim server.properties

#唯一值,每个server填写不一样。
broker.id=63
#允许删除主题。
delete.topic.enable=true
#修改;协议、当前broker机器ip、端口,此值可以配置多个,跟SSL等有关系。
listeners=PLAINTEXT://10.10.204.63:9092
#修改;kafka数据的存放地址,多个地址的话用逗号分割,例如 /data/kafka-logs-1,/data/kafka-logs-2。
log.dirs=/usr/local/kafka/logs/kafka-logs
#每个topic的分区个数,若是在topic创建时候没有指定的话会被topic创建时的指定参数覆盖。
num.partitions=3
#新增;表示消息体的最大大小,单位是字节。
message.max.bytes=5242880
#新增;是否允许自动创建topic,若是false,就需要通过命令创建topic。
default.replication.factor=2
#新增;replicas每次获取数据的最大大小。
replica.fetch.max.bytes=5242880
#新增;配置文件中必须使用以下配置,否则只会标记为删除,而不是真正删除。
delete.topic.enable=true
#新增;是否允许 leader 进行自动平衡,boolean 值,默认为 true。
auto.leader.rebalance.enable=true
#kafka连接的zk地址,各个broker配置一致。
zookeeper.connect=10.10.204.63:2181,10.10.204.64:2181,10.10.204.65:2181

#可选配置
#是否允许自动创建 topic,boolean 值,默认为 true。
auto.create.topics.enable=true
#指定 topic 的压缩方式,string 值,可选有。
compression.type=high
#会把所有的日志同步到磁盘上,避免重启之后的日志恢复,减少重启时间。
controlled.shutdown.enable=true

注:broker的配置文件中有zookeeper的地址,也有自己的broker ID, 当broker启动后,会在zookeeper中新建一个znode。

修改其他配置文件:

 # vim zookeeper.properties

修改为:

 dataDir=/usr/local/zookeeper/data
新增:

 server.1=10.10.204.63:2888:3888
 server.2=10.10.204.64:2888:3888
 server.3=10.10.204.65:2888:3888

修改以下配置文件:

# vim producer.properties

bootstrap.servers=10.10.204.63:9092,10.10.204.64:9092,10.10.204.65:9092

# vim consumer.properties

zookeeper.connect=10.10.204.63:2181,10.10.204.64:2181,10.10.204.65:2181

3.启动

启动所有节点kafka服务(可以通过查看日志,或者检查进程状态,保证Kafka集群启动成功):

# /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties

执行上述命令后,会出来滚动的启动信息,直至窗口静止,此时需重开终端检查是否启动成功;

# jps
 9939 Jps
 2201 QuorumPeerMain
 2303 Kafka

4.使用测试

下面操作可以在任意节点,重新打开一个终端操作:

执行以下命令,建立一个名为 renwole 的topic。

 # cd /usr/local/kafka/bin
 # ./kafka-topics.sh --create --zookeeper 10.10.204.63:2181,10.10.204.64:2181,10.10.204.65:2181 --replication-factor 1 --partitions 1 --topic renwole
 Created topic "renwole".

解释:

 --replication-factor 1 复制1份
 --partitions 1 创建1个分区
 --topic 主题为renwole

查看已创建的topic:

# ./kafka-topics.sh --list --zookeeper 10.10.204.63:2181
 _consumer_offsets
 renwole

注:可以配置 broker 自动创建 topic。

发送消息(Kafka 使用一个简单的命令行producer(然后可以随意输入内容,回车可以发送,ctrl+c 退出)默认的每条命令将发送一条消息。):

# ./kafka-console-producer.sh --broker-list 10.10.204.64:9092 --topic renwole

在消息接收端,执行以下命令查看收到的消息:

# ./kafka-console-consumer.sh --bootstrap-server 10.10.204.63:9092 --topic renwole --from-beginning

执行以下命令删除topic:

# ./kafka-topics.sh --delete --zookeeper 10.10.204.63:2181,10.10.204.64:2181,10.10.204.65:2181 --topic renwole

5.查看集群状态

kafka已经成功完成安装,查看kafka集群节点ID状态:

注:可在任意节点连接zookeeper客户端。

 # cd /usr/local/zookeeper/bin
 # ./zkCli.sh
 Connecting to localhost:2181
 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
 [myid:] - INFO [main:Environment@100] - Client environment:host.name=10-10-204-63.10.10.204.63
 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_144
 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_144/jre
 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/java/jdk1.8.0_144/jre/lib/rt.jar:/usr/java/jdk1.8.0_144/lib/dt.jar:/usr/java/jdk1.8.0_144/lib/tools.jar:/usr/java/jdk1.8.0_144/jre/lib
 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=
 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-514.21.2.el7.x86_64
 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-3.4.10/bin
 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@69d0a921
 Welcome to ZooKeeper!
 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
 JLine support is enabled
 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@876] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x35ddf80430b0008, negotiated timeout = 30000
 WATCHER::
 WatchedEvent state:SyncConnected type:None path:null
 [zk: localhost:2181(CONNECTED) 0] ls /brokers/ids #查看ID
 [63, 64, 65]

可以看到三台kafka实例ID都在线,如果模拟任意一台节点掉线,查看结果就会不同(这个ID号是前面设置的 broker.id )。

开放端口加入防火墙:

# firewall-cmd --permanent --add-port=9092/tcp
# firewall-cmd --reload

6.开机启动

创建system单元文件:

在 /usr/lib/systemd/system 目录下创建 kafka.service 填写以下内容:

[Unit]
 Description=Apache Kafka server (broker)
 Documentation=//kafka.apache.org/documentation/
 Requires=network.target remote-fs.target
 After=network.target remote-fs.target

[Service]
 Type=simple
 Environment="LOG_DIR=/usr/local/kafka/logs"
 User=kafka
 Group=kafka
 #Environment=JAVA_HOME=/usr/java/jdk1.8.0_144
 ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
 ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
 Restart=on-failure
 SyslogIdentifier=kafka

[Install]
 WantedBy=multi-user.target

启动kafka实例服务器:

# systemctl daemon-reload
# systemctl enable kafka.service
# systemctl start kafka.service
# systemctl status kafka.service

7.此外Kafka也可以通过 Web UI 界面进行集群的管理,你可以参阅:

安装配置 Kafka Manager 分布式管理工具

滴滴,好了,到目前为止,kafka分布式消息队列已经部署完成,其中包括必要的优化信息。目前,您可以用于大多数编程语言的Kafka客户端去创建Kafka生产者和消费者,轻松地将其用于您的项目中。

参考资料:
//kafka.apache.org/documentation.html#quickstart
//www.ibm.com/developerworks/cn/opensource/os-cn-kafka/
//tech.meituan.com/kafka-fs-design-theory.html
//blog.jobbole.com/99195/

在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

规划:

三台物理服务器就形成了(法定人数)。对于高可用性集群,您可以使用高于3的任何奇数。例如,如果设置5台服务器,则集群可以处理两个故障节点等。

物理服务器需要开启的端口 2888 3888 和 2181 上有入站连接。如果启用了 IPtables 或 Firewall,请确保启用指定的端口,因为zookeeper 需要通过这些端口进行通信。

OS:Centos 7.4 x64
Zookeeper-3.4.10

在本教程中,我们将在以下3台服务器部署zookeeper分布式群集:

10.10.204.63
10.10.204.64
10.10.204.65

先决条件:

在安装 Zookeeper 之前,你应该在系统中安装并配置好 JDKOracle Java8,这将与Zookeeper配合使用。

Linux JAVA JDK JRE 环境变量安装与配置

步骤1: 在各个实例上安装Zookeeper。

 下载Zookeeper
 # cd /tmp
 # wget //apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
 解压它
 # tar zxvf zookeeper-3.4.10.tar.gz
 移动 Zookeeper 到 /usr/local/
 # mv zookeeper-3.4.10 /usr/local/
 创建软连接
 # ln -s /usr/local/zookeeper-3.4.10 /usr/local/zookeeper
 拷贝配置文件
 # cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
 创建数据及日志存放目录
 # mkdir -p /usr/local/zookeeper/data
 # mkdir -p /usr/local/zookeeper/logs
 新建用户
 # groupadd zookeeper
 # useradd -g zookeeper -s /sbin/nologin zookeeper
 赋予Zookeeper目录权限
 # chown -R zookeeper:zookeeper /usr/local/zookeeper-3.4.10 /usr/local/zookeeper
 # chmod +755 /usr/local/zookeeper-3.4.10

步骤2:修改配置文件。

 # vim /usr/local/zookeeper/conf/zoo.cfg

默认值:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# //zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to “0” to disable auto purge feature
#autopurge.purgeInterval=1

修改为:

#服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳。
tickTime=2000
#这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper 服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长 能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
#这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒(适用于3.4以上版本)。
syncLimit=5
#这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。
autopurge.snapRetainCount=3
#这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能(适用于3.4以上版本)。
autopurge.purgeInterval=1
maxClientCnxns=60
#修改数据目录(可以是任意目录)。
dataDir=/usr/local/zookeeper/data
#新增日志目录(可以是任意目录)。
dataLogDir=/usr/local/zookeeper/logs
#Zookeeper服务器监听的端口,以接受客户端的访问请求。
clientPort=2181
#新增以下内容。
server.1=10.10.204.63:2888:3888
server.2=10.10.204.64:2888:3888
server.3=10.10.204.65:2888:3888

步骤3:分别在各个Zookeeper实例中创建myid文件。

 # echo "1" >> /usr/local/zookeeper/data/myid
 # echo "2" >> /usr/local/zookeeper/data/myid
 # echo "3" >> /usr/local/zookeeper/data/myid

步骤4:添加系统变量。

编辑:/etc/profile  文件,添加以下内容:

 export ZOOKEEPER_HOME=/usr/local/zookeeper/
 export PATH=$ZOOKEEPER_HOME/bin:$PATH

执行以下命令使其系统变量永久生效:

 # source /etc/profile

步骤5:创建系统单元文件。

在 /usr/lib/systemd/system 目录下创建  zookeeper.service  ,并填写如下内容:

[Unit]
 Description=zookeeper.service
 After=network.target

[Service]
 Type=forking
 Environment=ZOO_LOG_DIR=/usr/local/zookeeper/
 ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
 ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
 ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
 Restart=always
 User=zookeeper
 Group=zookeeper

[Install]
 WantedBy=multi-user.target

步骤6:启动Zookeeper。

重新加载配置信息:systemctl daemon-reload
启动zookeeper服务:systemctl start zookeeper.service
关闭zookeeper服务:systemctl stop zookeeper.service
查看进程状态及日志:systemctl status zookeeper.service
开机自启动:systemctl enable zookeeper.service
关闭自启动:systemctl disable zookeeper.service

步骤7:放行 2888、3888、2181 端口。

 # firewall-cmd --permanent --zone=public --add-port=2888/tcp
 # firewall-cmd --permanent --zone=public --add-port=3888/tcp
 # firewall-cmd --permanent --zone=public --add-port=2181/tcp

重载防火墙:

 # firewall-cmd --reload

步骤8:查看Zookeeper状态

分别检测3台服务器的运行状态是否正常。

查看 10.10.204.63 节点;

 [root@10-10-204-63 ~]# /usr/local/zookeeper/bin/zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

查看 10.10.204.64 节点;

 [root@10-10-204-64 ~]# /usr/local/zookeeper/bin/zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

查看 10.10.204.65 节点;

 [root@10-10-204-65 ~]# /usr/local/zookeeper/bin/zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
 Mode: follower

服务器中ZooKeeper分别扮演者不同的角色,1台将处于 leader(领导)地位,另外2台将处于 follower (追随者)。如果您获得相同的结果,那么你已经正确地安装配置好了ZooKeeper集群服务器。

步骤9:在3台物理服务器中的任意一台使用客户端连接。

客户端连接信息如下所示:

 [root@10-10-204-63 ~]# /usr/local/zookeeper/bin/zkCli.sh -server 10.10.204.64:2181
 Connecting to 10.10.204.64:2181
 2017-08-13 20:30:11,816 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
 2017-08-13 20:30:11,863 [myid:] - INFO [main:Environment@100] - Client environment:host.name=103-28-204-63.10.10.204.63
 2017-08-13 20:30:11,863 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_144
 2017-08-13 20:30:11,875 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
 2017-08-13 20:30:11,883 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_144/jre
 2017-08-13 20:30:11,883 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/java/jdk1.8.0_144/jre/lib/rt.jar:/usr/java/jdk1.8.0_144/lib/dt.jar:/usr/java/jdk1.8.0_144/lib/tools.jar:/usr/java/jdk1.8.0_144/jre/lib
 2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
 2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
 2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=
 2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
 2017-08-13 20:30:11,884 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
 2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-514.21.2.el7.x86_64
 2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
 2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
 2017-08-13 20:30:11,885 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/root
 2017-08-13 20:30:11,893 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=10.10.204.64:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@69d0a921
 Welcome to ZooKeeper!
 2017-08-13 20:30:12,103 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 10.10.204.64/10.10.204.64:2181. Will not attempt to authenticate using SASL (unknown error)
 JLine support is enabled
 2017-08-13 20:30:12,768 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@876] - Socket connection established to 10.10.204.64/10.10.204.64:2181, initiating session
 2017-08-13 20:30:12,935 [myid:] - INFO [main-SendThread(10.10.204.64:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 10.10.204.64/10.10.204.64:2181, sessionid = 0x15dda7deb6c0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
 [zk: 10.10.204.64:2181(CONNECTED) 2] create /renwoledb 'renwole' #创建数据节点
 Created /renwoledb
 [zk: 10.10.204.64:2181(CONNECTED) 3] get /renwoledb #调出节点数据
 renwole
 cZxid = 0x500000002
 ctime = Sun Aug 13 21:19:24 CST 2017
 mZxid = 0x500000002
 mtime = Sun Aug 13 21:19:24 CST 2017
 pZxid = 0x500000002
 cversion = 0
 dataVersion = 0
 aclVersion = 0
 ephemeralOwner = 0x0
 dataLength = 7
 numChildren = 0

整个zookeeper集群到此已经搭建并测试完成。如果 leader 节点出现故障,其他 follower (追随者)会投票选择新的 leader ,所以这就是我们想要的 Zookeeper 分布式集群。

转载请注明本文地址。

Centos 7 SSH连接超时自动断开解决方法

最近在Centos 7 上安装软件,一会不看就自动断开,也不知道软件的安装进度如何,一气之下我就直接改sshd_config文件,瞬间心情好多了。

1.编辑sshd配置文件

# vi /etc/ssh/sshd_config

找到

#ClientAliveInterval 0
#ClientAliveCountMax 3

修改为

ClientAliveInterval 60
ClientAliveCountMax 3

2.重启sshd服务

# systemctl restart sshd

这样连接centos7长时间不操作也不会连接超时中断了。

Zabbix Agent配置完成后无法启动Permission denied

今天在节点机器上新安装的Zabbix Agent无法启动。

1.查看Zabbix Agent日志文件才究其原因。

# cat /var/log/zabbix/zabbix_agentd.log

63133:20170601:092700.920 **************************
63133:20170601:092700.920 using configuration file: /etc/zabbix/zabbix_agentd.conf
63133:20170601:092700.920 cannot set resource limit: [13] Permission denied
63133:20170601:092700.920 cannot disable core dump, exiting...
63137:20170601:092711.171 Starting Zabbix Agent [cong171163]. Zabbix 3.2.6 (revision 67849).
63137:20170601:092711.171 **** Enabled features ****
63137:20170601:092711.171 IPv6 support: YES
63137:20170601:092711.171 TLS support: YES
63137:20170601:092711.171 **************************
......

2.此时只需要关闭Selinux,两种方案;

2.1.临时关闭

# setenforce 0

2.2.永久关闭(reboot host)

# vim /etc/selinux/config

SELINUX=enforcing

SELINUX=disabled

3.操作完成后,再次启动zabbix-agent服务

# systemctl start zabbix-agent.service

4.查看端口

# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:* 
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*

zabbix agent启动成功,10050端口已经运行。

Zabbix中文监控服务器图形图表显示乱码

zabbix对中文的支持不是很好,但为了管理方面有时候我们还是会选择中文,在zabbix监控的web界面,图形图标下面的中文会显示一个个小方块,这样是不正确的,需要下载字体。例如“微软雅黑”

“微软雅黑.ttf” 命名为 “msyh.ttf”

将下载的字体上传到/zabbix/fonts/字体下

修改/zabbix/include/defines.inc.php文件中的两处

define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
define('ZBX_FONT_NAME', 'DejaVuSans');

define('ZBX_GRAPH_FONT_NAME', 'msyh');
define('ZBX_FONT_NAME', 'msyh');

最后重启web服务器即可。

DirectAdmin更换ID以及换IP地址解决方案

一、

登录DirectAdmin服务器

# cd /usr/local/directadmin/scripts
# ./getLicense.sh 7353 12345
# service directadmin restart

其中7353是客户ID,12345是授权ID

如果你的服务器有多个不同的ip可以强制指定一个ip授权 如:10.200.200.26

# cd /usr/local/directadmin/scripts
# ./getLicense.sh 7353 12345 127.0.0.1
# service directadmin restart

二、

更新授权后需要更换IP,那么按照以下步骤操作

# cd /usr/local/directadmin/scripts
# ./ipswap.sh 10.200.10.26 10.200.200.26

其中10.200.10.26为原IP,10.200.200.26为新IP。之后按以下命令重启所有服务即可(或重启服务器省略以下操作)

# /etc/init.d/httpd restart
# /etc/init.d/proftpd restart
# /etc/init.d/exim restart
# /etc/init.d/dovecot restart

三、

irectAdmin 启动失败,查看2222端口是否运行;

# netstat -antp

若没有2222端口运行说明DirectAdmin并无启动,再次重启;

# service directadmin restart
Stopping DirectAdmin: [FAILED]
Starting DirectAdmin: [ OK ]
# service directadmin restart
Stopping DirectAdmin: [FAILED]
Starting DirectAdmin: [ OK ]
# service directadmin restart
Stopping DirectAdmin: [FAILED]

每次启动提示OK,闪退FAILED,无法打开directadmin控制面板。进directadmin安装目录:

# whereis directadmin
# cd /usr/local/directadmin
# ./directadmin
The ip of this machine (10.200.10.26) does not match the ip in the license file
Check the value of your ethernet_dev=venet0:1 setting in your /usr/local/directadmin/conf/directadmin.conf file and the output of /sbin/ifconfig

根据提示是DA授权失败或IP指定错误,发现客户说的授权IP是在venet0:0,而directadmin 的配置文件里指定的是venet0:1

# ifconfig -a
# vi conf/directadmin.conf
ethernet_dev=venet0:1
改
ethernet_dev=venet0:0

再次执行;

# ./directadmin
[root@hip directadmin]# ./directadmin
Bind Error: Make sure there aren't any copies running in the background
Address already in use

打开//ip:2222 成功显示登录窗口

四、

在使用DA过程中你会遇到dataskq进程占用CPU高达100%的情况,导致网站打开非常缓慢。dataskq这个进程是一个动作响应进程,在 /etc/cron.d/directadmin_cron任务里每分钟都会执行一次,查看
/var/log/directadmin/errortaskq.log日志反馈,dataskq一直检查到named没启动从而导致不断重启,所以可能是机器中的named在升级中卸载了,修复方法如下:

# yum install bind dbus dbus-libs -y
# mv /etc/init.d/named /etc/init.d/named.bak
# wget //www.directadmin.com/named
# chmod 755 /etc/init.d/named
# /sbin/chkconfig named reset
# /etc/init.d/named restart

如果以上方案并没有解决此问题,那就直接将dataskq进程killall掉即可。
更多帮助;//help.directadmin.com/

CloudStack 4.5安装配置完成之全局重点配置

expunge.delay 决定在卷被销毁之前卷存在多长时间,以秒计算。
expunge.interval 决定回收检查运行频率。
management.network.cidr 修改实例以及管理列所在段 即HTTP服务器所在网段CIDR.192.168.121.0/24
secstorage.allowed.internal.sites 修改实例以及管理列所在段 即HTTP服务器所在网段CIDR.
system.vm.use.local.storage 修改为true表示允许使用本地存储
enable.dynamic.scale.vm 修改为true表示动态主机
mem.overprovisioning.factor = 2 用来进行内存过度提供计算。(内存超载2倍,如果HOST内存足够大,可忽略)
Dynamically Scalable 模板里面 勾选上
cpu.overprovisioning.factor 用来进行cpu过度提供计算。可利用的cpu是实际cpu容量与cpu过度提供因子的乘积。
max.account.volumes 存储卷可以为一个帐户创建默认的最大数量
job.expire.minutes 给快照请求等待队列的长度设置一个最大值,如果达到限制,返回报错
router.template.kvm 更改系统模板后,修改全局设置中的系统vm名称 KVM64bitTemplate
concurrent.snapshots.threshold.perhost 这个值代表了在同一时刻有多少快照工作在hypervisor主机上执行

推荐:海外知名主机 SSD VPS 云服务器

//www.vultr.com/ 美国知名云服务器提供商
//www.digitalocean.com/ 纽约知名云主机商家(数字海洋)
//www.cloudflare.com/ 旧金山CDN提供商
//www.linode.com/ 日本VPS主机商
//www.cacloud.com/ 加拿大云服务机商
//www.ovh.com/ 法国知名IDC

以上VPS主机提供商均有全球云服务资源,特别适合站长,价格便宜,自定义权限大,可控度高。

Windows&Linux系统 开发测试环境集成软件包

UPUPW绿色免安装环境包,目前主要在windows下平台运行,支持包括Apache,Nginx和Kangle,并具备cmd命令行管理界面,是windows下不错的虚拟主机管理系统。

详情地址://www.upupw.net

LNMT集成环境安装包,它是有linux shell编写而成,目前也是只能在CentOS/RedHat系统下运行,支持Nginx、MariaDB、Tomcat,常用基本缓存组件,单该环境安装包不支持Apache,是一大遗憾。

详情地址://lnmt.org/

Anmpserver是一个完全开源;而且还是跨平台的开发测试环境软件包,不仅免费,而且还是绿色版,解压即用。支持平台包括Windows、Linux、OS X。该环境包支持Apache、Nginx、MySQL、PHP、还整合了WEB套件,对于菜鸟来说是极大的利器。

详情地址://www.anmpserver.com/

wdcp众人所知,是一套php虚拟主机管理系统,不仅支持Apche、Nginx、MySQL,还支持php、Apche&Nginx多版本共存和SSL。各大云市场都有该系统的镜像,目前wdcp最新版本是V3。可惜不支持windwos平台。

详情地址://www.wdlinux.cn

phpstudy是一个PHP调试环境的程序集成包,该应用集成了最新的Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,用户安装后无需配置即可使用。对于php新手来说,使用phpstudy配置windows环境可以达到省时省力的效果。但不支持Linux平台。

详情地址://www.phpstudy.net/

XAMPP是完全免费且易于安装的环境软件包,其中包含MariaDB、PHP和Perl。XAMPP开放源码包可以自定义任意修改。XAMPP还支持跨平台操作,也是多年的老牌子,推荐使用。

详情地址://www.apachefriends.org/

WampServer是一个集成安装环境平台。支持Apache、PHP、MySQL数据库。

详情地址://www.wampserver.com/

LNMP一键安装包是用Linux shell编写,可以在CentOS/RadHat/Fedora、Debian/Ubuntu/Raspbian/Deepin VPS或独立主机上安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)。可以直接用于生产环境,如果你使用的是linux系统,我建议你使用。

详情地址://lnmp.org/

oneinstack是后起之秀,可快速在生产环境中部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine、 MySQL/MariaDB/Percona、PHP、Apache、Tomcat)适用于CentOS 5~7(包括redhat)、Debian 6~8、Ubuntu 12~15的32位和64位,推荐使用。

详情地址://oneinstack.com/

PHPWAMP是运行在windows平台下纯绿色的PHP集成环境,这个环境和WampServer差不多,支持php多版本切换。

详情地址://www.phpwamp.com/