CentOS/Linux下设置IP地址

CentOS/Linux下设置IP地址

1、临时修改

1.1 修改IP地址

# ifconfig eth0 192.168.100.100

1.2 修改网关地址

# route add default gw 192.168.100.1 dev eth0

1.3 修改DNS

# echo “nameserver 8.8.8.8” >> /etc/resolv.conf

这个时候就可以上网了,上网的IP地址为192.168.100.100,网关地址为192.168.100.1。但是这样的设置是临时性的,一旦重启网卡或者重启服务器,除了1.3的操作其他均会被还原,这样的方式只适合临时IP修改,想要永久性修改网卡配置文件,就需要修改相应的文件

2、永久性修改

2.1 修改IP地址

修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,如果有多张网卡,则修改相应的网卡

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #网卡对应的设备别名
BOOTPROTO=static #网卡获得ip地址的方式(默认为dhcp,表示自动获取)
HWADDR=00:07:E9:05:E8:B4 #网卡MAC地址(物理地址)
IPADDR=192.168.100.100 #IP地址
NETMASK=255.255.255.0 #子网掩码
ONBOOT=yes #系统启动时是否激活此设备

2.2 修改网关地址

修改/etc/sysconfig/network文件

# vi /etc/sysconfig/network

NETWORKING=yes #表示系统是否使用网络,no表示不能使用网络
HOSTNAME=doiido #设置本机的主机名,要和/etc/hosts中设置的主机名相同
GATEWAY=192.168.100.1 #设置网关的IP地址
这个时候已经可以ping通IP地址,但是还无法ping通域名,因此需要修改DNS

2.3 修改DNS

修改/etc/resolv.conf文件

# vi /etc/resolv.conf

nameserver 8.8.8.8 #google域名服务器
nameserver 114.144.114.114 #国内域名服务器

2.4 重启网卡

# service network restart

正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]

这个时候,系统就可以正常的上网了

#注:其实网关地址和DNS也是可以写在ifcfg-eth0中,但是为了规范起见,将他们分开写

CentOS 7安装网站环境,以及远程连接MariaDB

vps安装了CentOS 7系统,需要安装网站环境,包括php7+Apache+MariaDB,以及远程连接MariaDB。

一、准备部分

首先我们需要先打开默认的80端口,然后重启防火墙:

firewall-cmd –zone=public –add-port=80/tcp –permanent

systemctl restart firewalld.service

接下来,更新源中的软件:

yum update

到此,准备工作完成。

二、安装Apache

yum install httpd httpd-devel

一条命令就搞定了。

还有几条相关的命令需要注意,特别是开机自启动,一定要记得设置。

systemctl start httpd.service #启动apache

systemctl stop httpd.service #停止apache

systemctl restart httpd.service #重启apache

systemctl enable httpd.service #设置apache开机启动

启动Apache服务器,之前已经开启80端口,直接访问ip地址,成功显示如下:

未分类

三、安装数据库

Centos7中已经使用MariaDB替代MySQL,原因是MySQL已经被甲骨文收购,存在闭源的风险,所以作为开源的系统,为了避免不必要的麻烦,开始使用MariaDB。用户不必担心MariaDB没用过不会用的尴尬,MariaDB数据库基本上可以做到无缝兼容MySQL。下面开始安装MariaDB数据库:

yum install mariadb-server

MariaDB数据库默认root密码为空,安全起见,我们给root设置一个密码:

systemctl start mariadb.service

/usr/bin/mysql_secure_installation

接下来,将通过问答的形式进行安全设置。

首先,需要输入当前的root密码:

Enter current password for root (enter for none):

初次使用,默认密码为空,直接回车下一步。

Set root password? [Y/n]

顾名思义,设置root密码,y表示yes,n表示no,默认yes,所以可以直接回车,然后提示我们设置密码,和确认密码,输入两次即可。一定要记得自己设置的密码。

接下来,还有一些其他设置。

Remove anonymous users? [Y/n]

是否禁止匿名用户,默认选项是yes,建议默认设置,回车继续。

Disallow root login remotely? [Y/n]

是否禁止root用户远程登录。如果只在本机内访问MariaDB,建议默认设置,回车继续。如果还需要其他云主机,或者还需要使用数据库远程连接软件进行连接,则需要选择n。

Remove test database and access to it? [Y/n]

是否删除测试数据库和权限。建议默认设置,回车继续。

Reload privilege tables now? [Y/n]

是否重新加载权限表,建议默认设置,回车继续。

到此,数据库安装完成,最后一步,设置开机启动:

systemctl enable mariadb

可能会用到的一些命令:

systemctl start mariadb.service #启动MariaDB

systemctl stop mariadb.service #停止MariaDB

systemctl restart mariadb.service #重启MariaDB

systemctl enable mariadb.service #设置开机启动

四、安装PHP

虽然PHP7已经发布很久了,性能上进步很大,所以我们选择安装PHP7。

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm   –force –nodeps

yum install php70w

还需要安装一些扩展:

yum install php70w-mysql php70w-gd php70w-imap php70w-ldap php70w-odbc php70w-pear php70w-xml php70w-xmlrpc php70w-mbstring php70w-devel

安装完成!接下来进行测试。

vi /var/www/html/test.php

打开test.php文件,如果没有会自动创建一个,按i字母进入编辑模式,输入下面的内容:

<?php

phpinfo();

?>

编辑完,按Esc键退出编辑模式,并输入:wq,敲击回车保存并退出。

然后打开浏览器,输入:你的ip/test.php,看看是否显示PHP的相关信息。

如果没有成功访问,可以试试重启Apache试试。

五、远程连接MariaDB数据库

我个人习惯用navicat管理数据库,所以需要远程连接数据库,前面数据库相关设置中有一项“是否禁止root用户远程登录”,如果像我一样有这个需要,那么就需要选择n。

仅仅是选择n还是不够的,因为我们还需要给数据库开放一个端口,一般我们默认的端口是3306,按照之前开放80端口,我们再开放一个3306端口给数据库,然后再重启防火墙:

firewall-cmd –zone=public –add-port=3306/tcp –permanent

systemctl restart firewalld.service

至此,所有安装设置都完成了。

CentOS 7搭建LAMP (非一键安装)

因为工作原因需要搭建一个zabbix服务器用来做监控,而zabbix是需要lamp或lnmp环境的。
现在网上一键搞定lamp/lnmp的教程很多,用起来也真的很方便,但是对于初学linux的人(比如说我)就有点儿云里雾里,不知道究竟做了什么?有点儿像windows下你安装一个软件只需要下一步下一步就可以了。
虽然便捷,但不适合新手去操作,一步一步的安装并成功才是真的有成就感,这也是学习的原动力。
废话不多说,网上各种各样的资料也很齐全,只把自己验证过的步骤写出来,能帮到大家最好,也可以给自己写下一备忘文档。

LAMP顾名思义就是Linux Apache Mysql PHP的缩写。
英文版原帖在此:https://www.howtoforge.com/apache_php_mysql_on_centos_7_lamp
有兴趣的朋友可以去看一下。

环境:CentOS 7

未分类

废话不多说,开干!

一、安装CentOS7, 少侠先把你的Linux装起来,LAMP的第一步。

(本次安装都在root权限下进行!!!)

二、安装Apache

1、yum的方式安装:

#yum -y install httpd

2、开启Apache服务:

#systemctl start httpd.service

3、设置Apache服务开机启动

#systemctl enable httpd.service

4、验证Apache服务是否安装成功。
在本机浏览器中输入地址IP地址,ip地址的查看方式

#ifconfig

如果你是用ssh的方式连接你的linux,而服务器在同一个局域网的情况下无法访问,那么请把CentOS的Firewall关闭或打开80和443端口。

#firewall-cmd --permanent --zone=public --add-service=http
#firewall-cmd --permanent --zone=public --add-service=https
#firewall-cmd --reload

此时Apache应该已经可以访问了,如果看到Apache默认页面 有Testing123….字样的话就是安装成功了。

未分类

三、安装PHP

1、安装

#yum -y install php

2、重启Apache服务

#systemctl restart httpd

然后写一个php文件在浏览器中运行一下

#vi /var/www/html/info.php

这是一个新建的php文件,按“i“ 插入以下内容

<?php phpinfo(); ?>

按ECS

:wq

保存退出
然后,在自己电脑浏览器中输入192.168.2.112/info.php
运行后会出现php的一些信息。

未分类

四、安装MySQL

MySQL在CentOS 7里是Mariadb。

1、安装

#yum -y install mariadb*

(这里我看到的教程是不加*的,所以导致我卡在这里卡了好久,有一些相关的东西没有安装上,我在后面的步骤中无法进行下去,后来排错半天加上星号之后问题解决。)

2、开启MySQL服务并设置开机启动

#systemctl start mariadb.service
#systemctl enable mariadb.service

未分类

3、设置root账户的密码

#mysql_secure_installation

这里会跳出一段英文,英文好的同学可以仔细的阅读以下,如果懒得读久在提示出来后按Enter就好了,设置密码时输入自己想设置的密码就可以,然后继续再让你选择y/n时,Enter就好。

未分类

当一切结束的时候,输入#mysql -uroot -p的方式验证一下。

未分类

未分类

五、将PHP和MySQL关联起来

#yum search php

未分类

选择你需要的安装:

#yum -y install php-mysql

未分类

六、安装常用的PHP模块。

包括GD库,Curl,mbstring等等…..

#yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel

然后重启Apach服务

#systemctl restart httpd.service

然后,再次再浏览器中运行info.php。你会看到安装的模块的信息,这就表示你的LAMP就搭建好了。

未分类

至此,完毕。

Grafana 4.x 安装部署(CentOS 7)

一、前言

本篇适用范围

  • CentOS 7+
  • InfluxDB 4.x

环境信息

  • CentOS 7
  • InfluxDB 4.6.3

二、安装

  • 安装
sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm
  • 启动服务并设置为开机启动
#启动Grafana服务
sudo systemctl start grafana-server
sudo systemctl status grafana-server

#将Grafana服务设置为开机启动
sudo systemctl enable grafana-server
  • 防火墙配置
#开放端口
firewall-cmd --add-port=3000/tcp --permanent

#重载防火墙配置
firewall-cmd --reload
  • 访问测试
http://<ip>:3000

如果出现登录页面则正常。

未分类

默认管理账号;admin,密码:admin

三、备注

  • 延伸阅读

Grafana + InfluxDB数据源以及曲线图表仪表盘配置:https://ken.io/note/grafana-quickstart-influxdb-datasource-graph

  • 本文参考

http://docs.grafana.org/installation/rpm/

CentOS 7,使用yum安装Nginx

当使用以下命令安装Nginx时,发现无法安装成功

yum install -y nginx

需要做一点处理。

安装Nginx源

执行以下命令:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装该rpm后,我们就能在/etc/yum.repos.d/ 目录中看到一个名为nginx.repo 的文件。

安装Nginx

安装完Nginx源后,就可以正式安装Nginx了。

yum install -y nginx

Nginx默认目录

输入命令:

whereis nginx

即可看到类似于如下的内容:

nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx

以下是Nginx的默认路径:

(1) Nginx配置路径:/etc/nginx/
(2) PID目录:/var/run/nginx.pid
(3) 错误日志:/var/log/nginx/error.log
(4) 访问日志:/var/log/nginx/access.log
(5) 默认站点目录:/usr/share/nginx/html

事实上,只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf 以及/etc/nginx/conf.d/default.conf 中查询到。

常用命令

(1) 启动:

nginx

(2) 测试Nginx配置是否正确:

nginx -t

(3) 优雅重启:

nginx -s reload

(4) 查看nginx的进程号:

ps -ef |grep nginx

(5)nginx服务停止

nginx -s stop
kill -9 pid

当然,Nginx也可以编译源码安装,步骤相对要繁琐一些,总的来说,还是比较简单的,本文不作赘述

CentOS 6/7升级最新内核并开启Google BBR

Google BBR是一款TCP加速工具,但要求Linux内核必须大于4.9,之前分享过文章 https://www.xiaoz.me/archives/7945 ,这个方法虽然方便,但是发现在Raksmart上升级失败了,于是尝试手动升级内核。

未分类

CentOS 7升级最新内核

#导入ELRepo 公钥
wget https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm --import RPM-GPG-KEY-elrepo.org
#安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#升级最新内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

内核升级完成后老的内核和新的会同时存在,CentOS 7 使用grub2引导程序,需要将最新内核优先级调整最高。先输入命令cat /boot/grub2/grub.cfg|grep menuentry查找所有内核,并找出最新内核的全名,并记录下来,如下截图。

未分类

#设置最新内核(请输入上面查询到的最新内核)
grub2-set-default "CentOS Linux (4.14.14-1.el7.elrepo.x86_64) 7 (Core)"
#设置完毕后,输入下面的命令查看是否成功
grub2-editenv list
[root@test2018119 ~]# grub2-editenv list
saved_entry=CentOS Linux (4.14.14-1.el7.elrepo.x86_64) 7 (Core)
#ok,没问题重启服务器生效
reboot

CentOS 6升级最新内核

#导入ELRepo 公钥
wget https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm --import RPM-GPG-KEY-elrepo.org
#安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
#升级最新内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

升级完毕后修改/etc/grub.conf将default=0修改为default=1,然后reboot重启服务器。

查看内核是否升级成功

输入uname -r可查看当前内核,如果大于4.9说明已经成功了,如果操作后发现你系统网络不通了,估计是升级失败挂掉了,这种情况只能从VNC控制台进入,参照上面的方式修改为原来老的内核启动。

#内核大于4.9
[root@test2018119 ~]# uname -r
4.14.14-1.el7.elrepo.x86_64

开启BBR

直接复制下面的命令即可:

#修改配置
cat >>/etc/sysctl.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
#使配置生效
sysctl -p

输入下面的命令来检测,如果看到返回的结果包含bbr 说明成功了,如下截图。

[root@test2018119 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
[root@test2018119 ~]# lsmod | grep bbr
tcp_bbr                20480  0 

总结

优先推荐使用秋水逸冰的一键脚本升级内核 https://www.xiaoz.me/archives/7945 ,如果失败了可以尝试上述方法手动升级。此方法适用于KVM/XEN虚拟化,OpenVZ虚拟化VPS请不要操作,一般不会成功,建议不要在生产环境操作,以免出现异常。

CentOS上zookeeper集群模式安装

本篇介绍在四个节点的集群中搭建zookeeper环境,zookeeper可配置三种模式运行:单机模式,伪集群模式,集群模式,本文使用集群模式搭建。

安装环境

  • 虚拟机:VMware Workstation 12 Player
  • Linux版本:CentOS release 6.4 (Final)
  • zookeeper版本:zookeeper-3.4.5-cdh5.7.6.tar.gz

  • 集群节点:

    • master:192.168.137.11 内存1G
    • slave1:192.168.137.12 内存512M
    • slave2:192.168.137.13 内存512M
    • slave3:192.168.137.14 内存512M
  • 前提:java已安装,已配置ssh免密登录,停掉防火墙等。

上传安装包

将下载的zookeeper-3.4.5-cdh5.7.6.tar.gz安装包上传到CentOS指定目录,例如/opt。
上传方法很多,这里在SecureCRT用rz命令。

解压缩安装包:

tar -zxf zookeeper-3.4.5-cdh5.7.6.tar.gz

重命名文件夹:

mv zookeeper-3.4.5-cdh5.7.6 zookeeper

修改配置文件

配置文件在安装目录conf文件夹下的zoo_sample.cfg,需要先复制一个并且改文件名:

[root@master conf]# pwd
/opt/zookeeper/conf
[root@master conf]# cp zoo_sample.cfg zoo.cfg
[root@master conf]# ll
total 16
-rw-rw-r--. 1 root root  535 Feb 22  2017 configuration.xsl
-rw-rw-r--. 1 root root 2693 Feb 22  2017 log4j.properties
-rw-r--r--. 1 root root  808 Jan 23 10:06 zoo.cfg
-rw-rw-r--. 1 root root  808 Feb 22  2017 zoo_sample.cfg

修改zoo.cfg配置文件:

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=/opt/zookeeper/tmp
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://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
dataLogDir=/opt/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server.4=slave3:2888:3888

参数说明:

  • tickTime: zookeeper中使用的基本时间单位, 毫秒值.
  • dataDir: 数据目录. 可以是任意目录.
  • dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
  • clientPort: 监听client连接的端口号.
  • initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
  • syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
  • server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.

由于我们修改了dataDir目录,在zookeeper目录中创建一个文件夹用于后面创建myid文件:

mkdir /opt/zookeeper/tmp

mkdir /opt/zookeeper/logs

复制安装包到其他节点

将zookeeper文件夹复制到其他三个服务器上:

scp -r /opt/zookeeper/ root@slave1:/opt
scp -r /opt/zookeeper/ root@slave2:/opt
scp -r /opt/zookeeper/ root@slave3:/opt

在master节点上用一下命令给每个节点上创建myid文件,文件中的id号与zoo.cfg配置文件中的对应:

[root@master zookeeper]# echo 1 > /opt/zookeeper/tmp/myid
[root@master zookeeper]# ssh slave1 "echo 2 > /opt/zookeeper/tmp/myid"
[root@master zookeeper]# ssh slave2 "echo 3 > /opt/zookeeper/tmp/myid"
[root@master zookeeper]# ssh slave3 "echo 4 > /opt/zookeeper/tmp/myid"

运行启动

由于没有配置环境变量,需要用全路径执行:

[root@master zookeeper]# /opt/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

其实配置文件中修改dataLogDir的本意是想让启动日志输出到配置的文件夹里,但是好像并没有,日志文件zookeeper.out还是在zookeeper的安装目录下生成。

查看zookeeper.out文件发现有错误:

2018-01-23 10:48:35,470 [myid:] - INFO  [main:QuorumPeerConfig@101] - Reading configuration from: /opt/zookeeper/bin/../conf/zoo.cfg
2018-01-23 10:48:35,484 [myid:] - WARN  [main:QuorumPeerConfig@290] - Non-optimial configuration, consider an odd number of servers.
2018-01-23 10:48:35,484 [myid:] - INFO  [main:QuorumPeerConfig@334] - Defaulting to majority quorums
2018-01-23 10:48:35,512 [myid:4] - INFO  [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
2018-01-23 10:48:35,513 [myid:4] - INFO  [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
2018-01-23 10:48:35,513 [myid:4] - INFO  [main:DatadirCleanupManager@101] - Purge task is not scheduled.
2018-01-23 10:48:35,536 [myid:4] - INFO  [main:QuorumPeerMain@132] - Starting quorum peer
2018-01-23 10:48:35,587 [myid:4] - INFO  [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181
2018-01-23 10:48:35,611 [myid:4] - INFO  [main:QuorumPeer@913] - tickTime set to 2000
2018-01-23 10:48:35,612 [myid:4] - INFO  [main:QuorumPeer@933] - minSessionTimeout set to -1
2018-01-23 10:48:35,612 [myid:4] - INFO  [main:QuorumPeer@944] - maxSessionTimeout set to -1
2018-01-23 10:48:35,612 [myid:4] - INFO  [main:QuorumPeer@959] - initLimit set to 10
2018-01-23 10:48:35,639 [myid:4] - INFO  [main:QuorumPeer@429] - currentEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
2018-01-23 10:48:35,643 [myid:4] - INFO  [main:QuorumPeer@444] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
2018-01-23 10:48:35,652 [myid:4] - INFO  [Thread-1:QuorumCnxManager$Listener@486] - My election bind port: 0.0.0.0/0.0.0.0:3888
2018-01-23 10:48:35,674 [myid:4] - INFO  [QuorumPeer[myid=4]/0:0:0:0:0:0:0:0:2181:QuorumPeer@670] - LOOKING
2018-01-23 10:48:35,679 [myid:4] - INFO  [QuorumPeer[myid=4]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@740] - New election. My id =  4, proposed zxid=0x0
2018-01-23 10:48:35,692 [myid:4] - INFO  [slave3/192.168.137.14:3888:QuorumCnxManager$Listener@493] - Received connection request /192.168.137.11:34491
2018-01-23 10:48:35,704 [myid:4] - INFO  [WorkerReceiver[myid=4]:FastLeaderElection@542] - Notification: 4 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 4 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)
2018-01-23 10:48:35,706 [myid:4] - WARN  [WorkerSender[myid=4]:QuorumCnxManager@368] - Cannot open channel to 2 at election address slave1/192.168.137.12:3888
java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365)
    at java.lang.Thread.run(Thread.java:748)

提示Connection refused的异常,其实一开始先不急着百度这个问题,其实要所有节点上都启动zookeeper后再看看运行状态,现在查看运行状态都是没运行的,也找不到相应的进程:

[root@master zookeeper]# /opt/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master zookeeper]# /opt/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

到其他节点服务器上都启动zookeeper,过一会儿后每个服务器查看状态:

[root@master zookeeper]# /opt/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@master zookeeper]# jps
5488 QuorumPeerMain
5539 Jps

如果有Mode和QuorumPeerMain,就说明已经启动成功了。

如果要关闭zookeeper,需要在每个节点上执行:

/opt/zookeeper/bin/zkServer.sh stop

另外如果使用如下命令启动,就会在启动时输出日志信息:

/opt/zookeeper/bin/zkServer.sh start-foreground

批量启动和关闭

一台一台服务器去执行命令有点麻烦,写一个脚本批量执行:

#!/bin/bash
#下面变量修改zookeeper安装目录
zooHome=/opt/zookeeper
if  [ $1 != ""  ]
    then
        confFile=$zooHome/conf/zoo.cfg
        slaves=$(cat "$confFile" | sed '/^server/!d;s/^.*=//;s/:.*$//g;/^$/d')
        for salve in $slaves ; do
            ssh $salve "$zooHome/bin/zkServer.sh $1"
        done
    else
        echo "parameter empty! parameter:start|stop"
fi

将上面脚本保存为zooManager文件,调用执行:

sh zooManager start

sh zooManager stop
[root@master opt]# sh zooManager start
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

由于所有服务器节点都是使用root用户,所以没有考虑权限问题,实际情况要考虑的。

参考:http://coolxing.iteye.com/blog/1871009

CentOS 7 卸载home 扩大root空间

背景:检查gitlab备份服务器时,发现最近几天的备份文件没有根据设置上传到这台服务器。

由于这台服务器较新,除了接收的备份文件外并没有部署其他文件,所以最先可以排除inode不够的可能,但是备份文件大概也就40G+,这个服务器明明分配了100G的空间。

于是我在gitlab所在的服务器上,手动运行一次备份文件命令后,出现了“No space left on device”。

未分类

空间不足?于是我在备份服务器上查看空间占用。

df -h

未分类

发现虽然给了这个CentOS100G的磁盘空间,但root只有50G的可用空间,剩下的空间大都分配给了/home。

查找资料后了解到,centos7默认的root大小为50G,也就是说如果硬件分配时超过50G,大部分剩余空间都会分配给home。

软件如果装在/usr/local目录下,并且data等数据文件也配置在root下,则必须在装机后调整root的大小,否则运行一段时间后很容易导致磁盘空间不足。

看来这样的确是磁盘空间不足引发了这次问题,反正这台虚拟机里我并不需要安装什么服务,如果可以将home去掉,再将空间都给root就解决问题了。于是我查找资料后根据实际情况整理了这篇解决方案。

一、卸载home

1.1 备份home分区文件

tar cvf /tmp/home.tar /home

1.2 修改fstab(这一步非常重要,千万不要漏了)

准备卸载/home文件系统,centos启动时会对/etc/fstab的内容逐一检测,由于fstab默认有/home,如果不修改fstab,重启之后会发现centos跪了。

未分类

未分类

所以卸载之前,要先注释掉/home,不让系统开机检测/home。

yum install -y vim
vim /etc/fstab

对于/home的内容增加注释符,wq保存。

#/dev/mapper/centos-home /home                   xfs     defaults        0 0

1.3 安装psmisc

yum install -y psmisc

//Psmisc软件包包含三个帮助管理/proc目录的程序,安装下列程序: fuser、 killall、pstree和pstree.x11(到pstree的链接)

//fuser 显示使用指定文件或者文件系统的进程的PID。

//killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。

//pstree 树型显示当前运行的进程。

//pstree.x11 与pstree功能相同,只是在退出前需要确认。

1.4 卸载/home文件系统

umount /home

如果提示无法卸载,是因为有进程占用/home,可以用下面的命令来停止占用的进程。

fuser -km /home/

1.5 删除/home所在的lv

lvremove /dev/mapper/centos-home

接着会出现确认的内容,输入“y”,回车。

未分类

二、扩大root

2.1 扩展/root所在的lv

由于之前/home占用了47G的空间,故我考虑将这些空间都加到/root里。

lvextend -L +47G /dev/mapper/centos-root

未分类

可是发现可用的空间并不是47G,应该是系统四舍五入了,减小一点换成48100MB。

这里说明,不去精确设置可用空间的原因是:我自己对如何获取可用空间的方法并不了解,与其花时间去了解这一块,我宁可浪费一点空间(毕竟几十MB的机械硬盘不值多少钱,即使是企业级硬盘)。

lvextend -L +48100M /dev/mapper/centos-root

未分类

出现下面的内容,说明/root所在的lv已经成功拓展成了96.97GB。

2.2 扩展/root文件系统

xfs_growfs /dev/mapper/centos-root

未分类

图中的13107200、25420800根据文件大小换算了下,和50G、97G都不符合,这个问题先搁置下,以后查资料看看。

2.3 检查/root文件系统的空间

df -h

未分类

可以发现/root从原来的50G提升到了97G。

在CentOS上安装Python3的三种方法

未分类

Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x你可以按照此文的三个方法进行安装.

注:本文示例安装版本为Python3.5,

一、Python源代码编译安装

安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository)

$ sudo yum install yum-utils

使用yum-builddep为Python3构建环境,安装缺失的软件依赖,使用下面的命令会自动处理.

$ sudo yum-builddep python

完成后下载Python3的源码包(笔者以Python3.5为例),Python源码包目录: https://www.python.org/ftp/python/ ,截至发博当日Python3的最新版本为 3.7.0

$ curl -O https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz

最后一步,编译安装Python3,默认的安装目录是 /usr/local 如果你要改成其他目录可以在编译(make)前使用 configure 命令后面追加参数 “–prefix=/alternative/path” 来完成修改。

$ tar xf Python-3.5.0.tgz
$ cd Python-3.5.0
$ ./configure
$ make
$ sudo make install

至此你已经在你的CentOS系统中成功安装了python3、pip3、setuptools,查看python版本

$ python3 -V

如果你要使用Python3作为python的默认版本,你需要修改一下 bashrc 文件,增加一行alias参数

alias python='/usr/local/bin/python3.5'

由于CentOS 7建议不要动/etc/bashrc文件,而是把用户自定义的配置放入/etc/profile.d/目录中,具体方法为

vi /etc/profile.d/python.sh

输入alias参数 alias python=’/usr/local/bin/python3.5’,保存退出

如果非root用户创建的文件需要注意设置权限

chmod 755 /etc/profile.d/python.sh

重启会话使配置生效

source /etc/profile.d/python.sh

二、从EPEL仓库安装

最新的EPEL 7仓库提供了Python3(python 3.4)的安装源,如果你使用CentOS7或更新的版本的系统你也可以按照下面的步骤很轻松的从EPEL仓库安装。

安装最新版本的EPEL

$ sudo yum install epel-release

用yum安装python 3.4:

$ sudo yum install python34

注意:上面的安装方法并未安装pip和setuptools,如果你要安装这两个库可以使用下面的命令:

$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo /usr/bin/python3.4 get-pip.py

三、从SCL(Software Collections)仓库安装

最后一种方法是通过Software Collections (SCL) repository来安装,需要注意的是SCL仓库仅支持CentOS 6.5以上版本,最新版的SCL提供了Python3.3版本,具体安装步骤:

$ sudo yum install python33

从SCL中使用python3,你需要一行命令来启用Python3:

$ scl enable python33 <command>

您还可以使用Python编译器来调用一个bash shell:

$ scl enable python33 bash

总结

笔者建议使用前两种方法,老司机使用方法一编译安装;新手使用方法二yum二进制安装,简单方便。

Centos 7 快速安装FTP服务

ftp的服务名称是vsftpd

查看有无安装

ps -ef | grep vsftpd

未分类

出现上图返回的信息表示没有安装ftp

安装vsftpd

yum install vsftpd -y # -y表示确认同意安装

未分类

关闭匿名登录

vi /etc/vsftpd/vsftpd.conf

找到anonymous_enable设置为NO,然后按Esc,输入:wq保存退出

未分类

开启服务

systemctl start vsftpd

查看服务是否开启

ps -ef | grep vsftpd # 查看服务是否开启

未分类

设置开机自启

systemctl is-enabled vsftpd # 查看是否为开机自启
systemctl enable vsftpd # 设置开机自启
systemctl is-enabled vsftpd # 成功后你会看到返回enabled

未分类