您的位置:首页 > 其它

cassandra在Windows上注册服务

2016-07-06 10:13 267 查看

cassandra在Windows上注册服务

昨天有朋友请教cassandra在windows上注册服务的问题,百度没有找到相关的解决办法,所以只能自己搞下,这里分享一下解决的方法。

1.前提条件

配置好Cassandra,能够通过cassandra.bat直接运行启动。这是百度上所有教程的终点,不过总不能每次都要运行bat启动,一直顶着个黑框吧。如果能做成服务岂不是更好,这就是这篇博客的起点。

2.查看cassandra.bat

用编辑器打开cassandra.bat查看,能够看到以下内容:

...
set ARG=%1
set INSTALL="INSTALL"
set UNINSTALL="UNINSTALL"
...
:doInstallOperation
set SERVICE_JVM="cassandra"
...


与tomcat一样,是可以直接通过bat脚本注册服务的,需要加install或者uninstall参数,服务名就叫‘cassandra’。

3.通过命令行注册服务

在cassandra根目录打开cmd命令行窗口,或cd到该目录下。执行:

cassandra install


却发现报错了,服务里也没有找到cassandra服务,怎么回事?



4.再次查看cassandra.bat

再次打开cassandra.bat查看,发现有如下字段:

...
set PATH_PRUNSRV=%CASSANDRA_HOME%\bin\daemon\
...
if "%PRUNSRV%" == "" set PRUNSRV=%PATH_PRUNSRV%prunsrv
...
echo trying to delete service if it has been created already
"%PRUNSRV%" //DS//%SERVICE_JVM%
...
echo Installing %SERVICE_JVM%. If you get registry warnings, re-run as an Administrator
"%PRUNSRV%" //IS//%SERVICE_JVM%
echo Setting the parameters for %SERVICE_JVM%
rem set PR_CLASSPATH=%CASSANDRA_CLASSPATH%
"%PRUNSRV%" //US//%SERVICE_JVM% ^
...


仔细看三个echo的字段,不就是上面截图中每次报“系统找不到指定的路径”前的字段,再看发现每次都要执行“PRUNSRV”命令,上面的PATH_PRUNSRV中定义了prunsrv的路径,我们到bin下查看一下,发现并没有脚本中的daemon文件夹。

5.找到prunsrv.exe并放到daemon里

这里我们知道prunsrv.exe是一个用来管理服务的程序,能够通过它来实现服务注册、卸载等,具体内容可百度关键字“prunsrv.exe”。

现在就清楚了,cassandra本身的bat里提供了通过prunsrv.exe来注册服务的功能,但是没有提供prunsrv.exe,需要我们从网上手动下载。

可以从这里下载:

http://archive.apache.org/dist/commons/daemon/binaries/windows/

注意:如果你的操作系统是64位的,则需要用amd64\prunsrv.exe

现在我们在cassandra的bin目录里创建一个daemon文件夹,并将对应的prunsrv.exe拷贝到该文件夹中。



6.再次尝试注册

再次在cmd命令行执行命令

cassandra install


能够发现注册成功了,没有了找不到文件的报错:



在服务中也能看到cassandra服务了:



可以设置为自动启动。这样在每次启动计算机的时候就会自动启动cassandra服务了。

7.验证与卸载

完事之后到底能不能用还需要我们验证一下,用telnet命令吧,在命令行执行:

net start cassandra
telnet 本机IP 9042


试一下能不能通,9042是默认配置,如果修改则自行修改此处端口号,能通则没问题了,不能通则看看服务是否已正确启动,检查自己的配置吧,不在此文主题。

卸载服务于注册服务类似,除了普遍的sc命令,可以通过cassandra.bat脚本卸载,在bin目录执行如下命令即可:

cassandra uninstall
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cassandra