Linux上安装jdk、zookeeper

Linux服务器连接不上的几种解决办法ssh: connect to host master port 22: Connection timed out

遇到了一个问题,当我输入L:ssh localhost时,报了如下错误:ssh: connect to host master port 22: Connection timed out在网上找了很多解决办法,终于解决了,在此记录一下我的解决步骤:
1、查看ip地址:ifconfig
发现ip地址发生了变化!
2、ping一下网络是否连接
ping 远程IP

如果能ping通则表示与服务器网络连接是正常,接下来测试端口:
telnet 远程ip 端口

3、如果telnet不上,要考虑服务器是否有防火墙拦截:
CentOS7查看防火墙是否运行:
firewall-cmd --state

CentOS6查看防火墙是否运行
/sbin/service iptables status

使用sudo service iptables status命令查看防火墙状态
可使用sudo chkconfig iptables off来永久关闭防火墙
4、检查IP: sudo vi /etc/hosts(我的ip是否与此文件中的ip匹配)
4、如果防火墙被拦截,需要放行端口。如果防火墙没有拦截,则要考虑服务内部是否配置限定IP访问。
MySQL、MongoDB、Redis都有bind选项,用来限定客户端IP

5、再检查服务内部是否有其它权限设置,例如MySQL有远程访问配置,Redis有protected-mode改为no

linux命令行过长翻页

我们可以通过组合键实现上一页和下一页:Shift + PageUp 和 Shift + PageDown
或者在输入命令的后面加上管道命令:less或者more

more 可翻页查看(一页一页翻动)

[wenjie@localhost ~]$ more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(31%) <== 重点在这一行,光标也会在这里等待你的命令

空格键(Space):代表向下翻一页。
Enter:代表向下滚动一行。
/字符串:代表在当前显示的内容中,向下查找“字符串”这个关键字。
:f:立刻显示出文件名与当前的行号。
q:代表立即退出,不予显示。
b或[ctrl]-b:往回翻,不过该操作只对文件有用。

less 可翻页查看(一页一页翻动)
less的用法比起more更加有弹性,在使用more的时候,我们没有办法向前翻,只能往后面看。若使用了less之后,就可以更加便捷的查看数据了。

命令说明

[wenjie@localhost ~]$ more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 重点在这一行,光标也会在这里等待你的命令

空格键:向下翻动一页
[PageDown]:向下翻动一页
[PageUp]:向上翻动一页
/字符串:向下查询“字符串”的功能
?字符串:向上查询“字符串”的功能
n:重复前一个查询
N:反向重复前一个查询
q:离开
man这个命令就是调用 less来显示说明文件的内容的。

Linux上安装jdk

在这里插入图片描述

卸载OpenJDK

由于我安装的CentOS系统本身就自带OpenJDK,所以我们要卸载掉它。那到底该如何卸载呢?下面我娓娓道来。
首先使用rpm -qa | grep java命令查看CentOS系统自带的OpenJDK: —发现自带1.7版本的openjdk

然后使用rpm -e --nodeps java-xxx命令卸载掉CentOS6.7系统自带的OpenJDK: —卸载不掉也没关系

怎样证明你确实卸载掉了呢?仍然可使用rpm -qa | grep java命令来查看。

创建JDK的安装路径
安装JDK之前,先创建JDK的安装路径,我打算将JDK安装在/usr/local/目录下的java目录中,所以我们要在/usr/local/目录下创建一个java目录。
cd /usr/local
mkdir java
在这里插入图片描述
上传安装文件到Linux

接下来我们就要将JDK安装文件上传到Linux系统上。首先我们肯定要先下载JDK安装程序,由于本人安装的是64位的Linux系统——CentOS7,所以我下载的是64位的JDK,如下:

那怎样将jdk-7u71-linux-i586.tar.gz文件上传到Linux系统上呢?我们可借助一个工具——FileZilla
在这里插入图片描述
怎样知道我们真的上传上去了呢?可使用cd ~命令切换到当前用户主目录(即root),然后使用ls命令查看一下该目录。
cd /temp
ls
发现已经存在了

解压jdk-7u71-linux-i586.tar.gz文件
使用tar –xvf jdk-7u71-linux-i586.tar.gz –C /usr/local/java命令将root目录下的jdk-7u71-linux-i586.tar.gz文件解压到/usr/local/java目录下。

再使用cd jdk1.7.0_71命令进入到jdk1.7.0_71目录中,并使用ll命令查看一下该目录,就能看到我们非常熟悉的东西了。

如果我们敲入java命令,根本就不会给我们提供一些帮助信息或者显示的回会是自带的openjdk的信息,这就需要我们配置JDK的环境变量了。

配置环境变量

使用vim /etc/profile命令打开profile这个文件,它里面是linux系统的一些环境变量。然后移动该文件的末尾行,敲入i,添加如下配置:

#set java environment 注释
JAVA_HOME=/usr/local/java/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

添加完之后,如何退出呢?可按下esc键,再输入:wq命令。
注意:向profile这个文件中配置好JDK的环境变量之后,一定要使用source /etc/profile命令重新加载下该配置文件。
最后,可使用java -version命令查看JDK的版本号。

在这里插入图片描述之前用Java -version显示的是centos7自带的openjdk的版本号现在是自己安装的了!
在这里插入图片描述
出现以上情况,我们的Linux系统就成功安装JDK了。

其实在linux上安装jdk有多种方式:
1.通过tar.gz压缩包安装

此方法适用于绝大部分的linux系统

下载tar.gz的压缩包,这里使用官网下载。

下载完成后解压到指定文件下
先创建java文件目录,如果已存在就不用创建
[root@lyh:] # mkdir -p /usr/local/java
解压到java文件目录
[root@lyh:] # tar -vzxf jdk-8u161-linux-x64.tar.gz -C /usr/local/java/

添加环境变量,编辑配置文件

[root@lyh:] # vi /etc/profile
在文件最下方或者指定文件添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export CLASSPATH= : C L A S S P A T H : :CLASSPATH: :CLASSPATH:JAVA_HOME/lib/
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin

保存退出(保存退出的命令是,Shift+:后输入wq回车),然后重新加载配置文件

[root@lyh:] # source /etc/profile

最后测试

[root@lyh:] # java -version
可以看到一下信息则表示配置成功
java version “1.8.0_161”
Java™ SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot™ 64-Bit Server VM (build 25.161-b12, mixed mode)

2.red hat 或centos

使用rpm命令

1、通过官网下载选定版本的rpm包,然后放在指定目录下(这里是/tmp)
进入指定目录下cd /tmp
2、添加执行权限
[root@lyh:] # chmod +x /tmp/jdk-8u161-linux-x64.rpm
3、rpm安装
[root@lyh:] # rpm -ivh /tmp/jdk-8u161-linux-x64.rpm
4、查看版本信息
[root@lyh:] # java -version
可以看到一下信息则表示配置成功
java version “1.8.0_161”
Java™ SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot™ 64-Bit Server VM (build 25.161-b12, mixed mode)

3.使用yum源

这里需要注意yum源的配置
1、查看yum库中都有哪些jdk版本
[root@lyh:] # yum search java|grep jdk
2、选择指定的版本安装,注意最后的 * 以及yum源安装的是openjdk,注意openjdk的区别。
[root@lyh:] # yum install java-1.8.0-openjdk*
3、安装完成后查看版本信息
[root@lyh:] # java -version

Linux上安装zookeeper

分布式应用现在已经越来越广泛,Spring Could也是一个不错的一站式解决方案,不过据我了解国内目前貌似使用阿里Dubbo的公司比较多,一方面这个框架也确实很OK,另一方面可能也是因为Dubbo的中文文档比较全的缘故,据Dubbo官网上的消息,阿里已经重新开始了对Dubbo的维护,这也算是使用Dubbo的互联网公司的福音了吧。OK,废话不多说,今天我们就先来看看如何在Linux上安装zookeeper。

了解过Dubbo的小伙伴都知道,Dubbo官方建议我们使用的注册中心就是zookeeper,zookeeper本来是Hadoop的一个子项目,现在发展成了Apache的顶级项目,看名字就知道Zookeeper就是动物园管理员,管理Hadoop(大象)、Hive(蜂房/蜜蜂)等动物。Apache上的Zookeeper分Linux版和Windows版,但是考虑到实际生产环境都是Linux,所以我们这里主要介绍Linux上Zookeeper的安装,Windows上Zookeeper的安装则比较简单,下载解压即可,和Tomcat差不多。

OK,废话不多说,接下来我们就来看看zookeeper的安装步骤。
下载地址:
https://archive.apache.org/dist/zookeeper/
安装日志:
https://zookeeper.apache.org/releases.html#download

在这里插入图片描述

单机版

上传zookeeper的安装包到Linux

创建zookeeper的安装路径
安装zookeeper之前,先创建zookeeper的安装路径,我打算将zookeeper安装在/usr/local/目录下的zookeeper目录中,所以我们要在/usr/local/目录下创建一个zookeeper目录。
使用cd /usr/local命令切换到local目录,并使用ls令查看一下该目录。
ls
mkdir zookeeper
ls

解压zookeeper
使用cd ~命令切换到当前用户主目录(即root)下,然后使用tar -xvf zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper命令将root目录下的zookeeper-3.4.6.tar文件解压到/usr/local/zookeeper目录下。

解压成功之后,使用cd /usr/local/zookeeper命令切换到zookeeper目录下,然后再使用ls命令查看一下该目录,如下:

然后再使用cd zookeeper-3.4.6命令进入到zookeeper-3.4.6目录中,使用ls命令查看一下这个目录,就能看到我们非常熟悉的东西了。

在这里插入图片描述

安装zookeeper
在安装zookeeper之前,大家一定要注意,由于zookeeper的安装需要JDK的支持,因此需要先安装JDK,大家可以参考Linux系统上安装JDK这篇文章进行学习。
我们进入到zookeeper-3.4.6目录中之后,使用mkdir data命令在该目录中创建一个data目录
mkdir data
ls

然后我们进入到conf目录下,可以看到该目录下有个zoo_sample.cfg文件。
接着我们需要使用mv zoo_sample.cfg zoo.cfg命令将zoo_sample.cfg文件改下名字,改为zoo.cfg

下面我们来修改zoo.cfg文件,我们使用的命令是vim zoo.cfg,在打开的文件中修改”dataDir”的路径为我们上面创建的data的绝对路径,即/usr/local/zookeeper/zookeeper-3.4.6/data,

apache-zookeeper-3.5.5-bin
在这里插入图片描述

修改完zoo.cfg之后,按esc退出编辑模式,然后再输入:wq命令来保存并退出zoo.cfg,这样我们便配置好了。
接下来我们便启动zookepper,我们进入到/zookeeper-3.4.6/bin目录下,使用命令./zkServer.sh start来启动zookeeper,启动完之后,我们可以使用./zkServer.sh status来查看启动状态。如果想关闭zookeeper可以使用命令./zkServer.sh stop来关闭,这里就不演示了。启动完zookeeper,我们便有注册中心了。
在这里插入图片描述

注意要关闭linux的防火墙。
[root@localhost /]# service iptables stop
可以通过命令:
chkconfig iptables off 永久关闭防火墙。

在这里插入图片描述
在这里插入图片描述

当我们启动之后,查看状态
在这里插入图片描述
感觉像是启动不成功
此时可以使用命令 bin/zkServer.sh start-foreground 启动,并查看启动的输出信息,可以根据上面信息定位问题出在哪里
在这里插入图片描述

centOS7永久关闭防火墙(防火墙的基本使用)

查看防火墙状态: systemctl status firewalld.service
在这里插入图片描述
绿的running表示防火墙开启

执行关闭命令: systemctl stop firewalld.service
再次执行查看防火墙命令:systemctl status firewalld.service
如下图所示表示防火墙已经关闭
在这里插入图片描述
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
完成

============================================================
关于防火墙的其他命令:
启动:systemctl start firewalld.service
防火墙随系统开启启动 : systemctl enable firewalld.service

CentOS6关闭防火墙使用以下命令:

// 临时关闭
service iptables stop
// 禁止开机启动
chkconfig iptables off

CentOS7关闭防火墙使用以下命令:

// 临时关闭
systemctl stop firewalld
// 禁止开机启动
systemctl disable firewalld

Error:could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

zookeeper-3.5.5安装报错:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain
1、首先去官网下载了最新版本:zookeeper-3.5.5。
2、回到我的Centos服务器上,修改配置文件。
3、然后启动,竟然报错了:
错误: 找不到或无法加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain

排查之路
崩溃,天呀,见鬼了,于是进入到了我的排查之路,各种百度,各种办法都无法解决我的问题。
于是静下心来,排查问题,先看我们的下载页面,有两个包,啥区别呢?
在这里插入图片描述
接下来,在版本的更新记录中终于找到了答案:
在这里插入图片描述
解决方案
总结:原来从目前的最新版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。

好想吐槽下啊,Zookeeper的包的变动,源码的包就不能向其他的安装包一样加个src的标识吗?见名知意多好,以避免误下载。

所以同学们,如果下载3.5.5以后的版本的Zookeeper安装包,我们乖乖的下载带有bin标识的包就不会有问题了。

下载地址:https://archive.apache.org/dist/zookeeper/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在排查中发现别人遇到的错误,也记录到这里:

解决Zookeeper无法启动的问题

今天在启动zookeeper集群的单个zookeeper节点时总是报如下错误

[root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
[root@zookeeper1 zookeeper-3.4.5]#

于是尝试解决它,首先要想到的是是否安装了JDK,因为zookeeper的运行需要JVM环境,可以使用java和java -version命令来验证,如下所示,可以看到JDK已经正确安装。

[root@zookeeper1 zookeeper-3.4.5]# java
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32	  使用 32 位数据模型 (如果可用)
    -d64	  使用 64 位数据模型 (如果可用)
    -server	  选择 "server" VM
                  默认 VM 是 server.
 
    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 : 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
                  设置系统属性
    -verbose:[class|gc|jni]
                  启用详细输出
    -version      输出产品版本并退出
    -version:<值>
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  需要指定的版本才能运行
    -showversion  输出产品版本并继续
    -jre-restrict-search | -no-jre-restrict-search
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  在版本搜索中包括/排除用户专用 JRE
    -? -help      输出此帮助消息
    -X            输出非标准选项的帮助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>, 例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
[root@zookeeper1 zookeeper-3.4.5]# java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
[root@zookeeper1 zookeeper-3.4.5]# 

那么下面我们便查看zookeeper的端口2181是否已经被占用了(当然,有可能大家已经改用其它端口了,这个根据大家的实际来操作),如下所示,可以看到,2181端口还真的被占用了!这就是问题的根源,我们可以看到占用2181端口的进程号是1403,那么我们便杀掉这个进程。

[root@zookeeper1 zookeeper-3.4.5]# netstat -apn | grep 2181
tcp        0      0 :::2181                     :::*                        LISTEN      1403/java           
[root@zookeeper1 zookeeper-3.4.5]#

杀掉进程的命令是kill -9 1403,杀掉进程之后再检查一下是否还有进程占用2181端口,发现已经没有进程占用了。

[root@zookeeper1 zookeeper-3.4.5]# kill -9 1403
[root@zookeeper1 zookeeper-3.4.5]# netstat -apn | grep 2181
[root@zookeeper1 zookeeper-3.4.5]#

下面我们再来启动zookeeper,就应该能正常启动了。

如果上面的操作还解决不了问题,那么我们接着到zookeeper-3.4.5的data目录下,可以看到如下所示的文件,其中version-2文件夹和zookeeper_server.pid两个文件都是需要删除掉的。

[root@zookeeper1 data]# ll
总用量 12
-rw-r--r--. 1 root root    2 4月  26 05:31 myid
drwxr-xr-x. 2 root root 4096 4月  26 07:03 version-2
-rw-r--r--. 1 root root    4 4月  28 04:25 zookeeper_server.pid
[root@zookeeper1 data]#

删除操作如下,删完只剩下myid文件了。

[root@zookeeper1 data]# rm -rf version-2/ zookeeper_server.pid 
[root@zookeeper1 data]# ls
myid
[root@zookeeper1 data]#

我们再次尝试启动zookeeper,如下所示,发现zookeeper终于正常启动了。

[root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@zookeeper1 zookeeper-3.4.5]# 

还有一种情况就是,启动zookeeper集群的某个节点时死活启动不了,把上面所说的三种情况都检查过了还是启动不了,这时我们可以先启动zookeeper的另外几个节点,等把其它节点启动好了,这个启动不了节点就自动启动好了!!!

基本上这几种情况便可以解决zookeeper无法启动的问题了(如果还是不行,就要看看是不是安装zookeeper的步骤有错误了)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值