用户工具

站点工具


01-基础学习:课程:毕业设计:issue

ssh免密码登录

疑问:陆嘉桓 Hadoop实战中,Hadoop集群配置ssh免密码登陆的时候,只将master的公钥分发到了slave上,是不是意味着只有master需要登陆slave而slave无需登陆master?

参见:http://developer.51cto.com/art/201006/203947.htm

无密码SSH 登录

启动Hadoop的方式是在主master上调用下面的命令:
$HADOOP_HOME /bin/start-all.sh
此调用过程中,Hadoop依次启动以下服务:
在主master上启动NameNode 服务; 
在主master上启动SecondaryNameNode 服务; 
在次master上启动SecondaryNameNode 服务; 
在所有slave上启动DataNode 服务; 
在主master上启动JobTracker 服务; 
在所有slave上的TaskTracker 服务。

部署Hadoop过程中Hadoop需要启动服务,在此需要注意以下几点:
启动NameNode 与JobTracker 服务不需要SSH授权; 
需要通过SSH登录之后才能启动SecondaryNameNode 、DataNode 以及TaskTracker 服务,因此:
因为需要启动SencondaryNameNode 服务,所以要为主master提供SSH授权; 
因为需要启动SencoddaryNameNode 服务,所以要为所有的次master提供SSH授权; 
因为需要启动DataNode 和TaskTracker 服务,所以要为所有的slave提供SSH授权。 
总而言之,要为Hadoop集群中的所有计算机提供SSH授权。

为什么要提供无密码SSH登录方式呢?为的是图省事儿。试想在启动 Hadoop集群过程中,要手动输入每一台电脑的SSH密码将是一件多么烦人的事!SSH授权的方法在这里不做详细的描述。无密码SSH登录技术也是相对成熟的技术。但有一个环节需要注意,那就是文件的访问权限问题。
表现为:
Linux系统中$HOME目录下的.ssh目录为用户所有,权限必须为700(只有用户自己可以全权访问); 
.ssh目录下的授权文件“authorized_keys”为用户所有,权限必须为644。本节有关部署Hadoop应该注意的事项介绍完毕。

jps命令找不到

rpm包安装的jdk,装完直接可以运行java,以为自动配好了环境变量。今天发现找不到jps命令,先 find / -name “java” -type d 找到java目录,然后 find /usr/java -name “jps*” ,发现确实有jps命令,看来rpm包并没有完全设置好环境变量。
修改/etc/profile,添加

#set java enviroment
JAVA_HOME=/usr/java/default
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

VMware嵌套虚拟化

开启硬件虚拟化

去除M-oM-;M-?

用notepad++,编码为 utf8无BOM即可

Kickstart post脚本

Kickstart防火墙问题

在post脚本中进行关闭防火墙的操作,貌似不起作用,导致rsync拉取Master密钥总是失败:

^[[36m[SUCC]: Stop iptables ^[[0m
^[[36m[SUCC]: Chkconfig iptables off ^[[0m
/tmp
^[[36m[SUCC]: resourcefile download ok! ^[[0m
^[[36m[SUCC]: hadoop download ok! ^[[0m
^[[36m[SUCC]: jdk download ok! ^[[0m
^[[36m[SUCC]: hadoop_centos.sh download ok! ^[[0m
^[[36m[SUCC]: xinetd down ok! ^[[0m
^[[36m[SUCC]: rsync down ok! ^[[0m
^[[36m[SUCC]: xinetd install ok! ^[[0m
^[[36m[SUCC]: rsync install ok! ^[[0m
Stopping xinetd: ^[[60G[^[[0;31mFAILED^[[0;39m]^M
Starting xinetd: ^[[60G[^[[0;32m  OK  ^[[0;39m]^M
rsync: failed to connect to Master: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]

折腾半天才想起来可以试试直接在ks配置中禁用防火墙

firewall(可选)
                这个选项对应安装程序里的「防火墙配置」屏幕:
                firewall --enabled|--disabled [--trust=] <device> [--port=]
                --enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙.
                --disabled或--disable,不要配置任何iptables规则.
                --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1.
                <incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙.
                        --ssh
                        --telnet
                        --smtp
                        --http
                        --ftp
                --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口.
                        例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开.
http://blog.chinaunix.net/uid-17240700-id-2813881.html

shell出错重试脚本

#!/bin/sh
 
while [ 0 -eq 0 ]
do
    echo ".................. job begin  ..................."
 
    # ...... call your command here 在这里调用你的命令 ......
 
    # check and retry   
 
    if [ $? -eq 0 ]; then
        echo "--------------- job complete ---------------"
        break;
    else
        echo "...............error occur, retry in 2 seconds .........."
        sleep 2
    fi
done

如何让ssh登录时不提示"是否要添加HostKey"

ssh登录某台机器的时候,如果这台机器从来没有使用ssh登录过(严格来说应该是~/.ssh/knownhosts文件中没有这台机器的HostKey),那么,ssh会产生一个提示,询问是否需要添加这台机器的HostKey,回答yes/no即可,虽然只要不删除~/.ssh/knownhosts文件中该机器的HostKey,则这个提示将不会出现,但是如果我们需要书写一些自动化脚本的时候,这就会成为问题。
man了一下sshconfig,发现有解决的办法:创建文件~/.ssh/config,添加一行:
StrictHostKeyChecking no
即可。以后ssh将会自动添加HostKey到~/.ssh/known
hosts,不会再询问。默认该项配置是ask,所以会询问。如果配置成yes,则每次必须手动将hostkey添加到~/.ssh/known_hosts文件中,这是最严格的配置。

From:http://blog.163.com/kartwall@126/blog/static/8942370200831485241268/

bash脚本中如何获取自身路径

DIR=“$( cd “$( dirname “${BASH_SOURCE[0]}” )” && pwd )”

这是stackoverflow上推荐的方法

http://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get-the-full-path-to-itself

我看了两遍,不明觉厉

后来改了一下:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

S0=“${BASH_SOURCE[0]}”

DIRNAME=“$( dirname “$S0”)”

DIR=“$( cd “$DIRNAME” && pwd)”

echo “$S0”

echo “$DIRNAME”

echo “$DIR”

运行脚本,输出:

./build/jenkins/tesh.sh

./build/jenkins

/Users/heliclei/.jenkins/jobs/dailybuild-develop-ios/workspace/build/jenkins

S0是脚本相对于当前目录的路径,是相对路径

再用dirname命令得到脚本的目录名,也是相对路径

用cd命令切换到脚本所在目录,再执行pwd命令,

就得到了脚本所在目录的绝对路径

推荐一本学习bash脚本的好书《Bash Beginners Guide》

来自:http://www.2cto.com/os/201312/267533.html

Kickstart安装Cloudstack日志

 Installing : cloudstack-management-4.3.0-1.el6.x86_64                 132/132 
Please download vhd-util from http://download.cloud.com.s3.amazonaws.com/tools/vhd-util and put it in
/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/
Unable to determine ssl settings for server.xml, please run cloudstack-setup-management manually
Unable to determine ssl settings for tomcat.conf, please run cloudstack-setup-management manually

createrepo使用

用绝对路径比较省事,不会有乱七八糟的问题。 比如镜像目录结构如下:

-centos
  -Packages
  -repodata
     -group.xml

createrepo -g /…/centos/repodata/group.xml /…/centos/

Cloudstack web ui 404错误

大概是 Cloudstack-setup-database和Cloudstack-setup-management执行顺序的问题,先执行前者

本地yum源制作

直接挂载centos dvd盘比较方便,挂载到web目录下

来宾VM

来宾VM,大概是指除系统VM之外的VM,可以公网访问的,可以租给客户的VM. 系统VM,大概是指用来管理虚机的VM

无法添加主机

2014-05-19 02:35:38,912 INFO  [cloud.agent.AgentShell] (main:null) Implementation Version is 4.3.0
2014-05-19 02:35:38,918 INFO  [cloud.agent.AgentShell] (main:null) agent.properties found at /etc/cloudstack/agent/agent.properties
2014-05-19 02:35:38,956 INFO  [cloud.agent.AgentShell] (main:null) Defaulting to using properties file for storage
2014-05-19 02:35:38,962 INFO  [cloud.agent.AgentShell] (main:null) Defaulting to the constant time backoff algorithm
2014-05-19 02:35:39,037 INFO  [cloud.utils.LogUtils] (main:null) log4j configuration found at /etc/cloudstack/agent/log4j-cloud.xml
2014-05-19 02:35:39,315 INFO  [cloud.agent.Agent] (main:null) id is
2014-05-19 02:35:39,327 WARN  [cloud.resource.ServerResourceBase] (main:null) Nics are not specified in properties file/db, will try to autodiscover
2014-05-19 02:35:39,345 INFO  [cloud.resource.ServerResourceBase] (main:null) Designating private to be nic br0
2014-05-19 02:35:39,388 INFO  [resource.virtualnetwork.VirtualRoutingResource] (main:null) VirtualRoutingResource _scriptDir to use: scripts/network/domr/kvm
2014-05-19 02:35:40,168 ERROR [cloud.agent.AgentShell] (main:null) Unable to start agent: Failed to get private nic name

查看/etc/cloudstack/agent/agent.properties

private.network.device=cloudbr0




public.network.device=cloudbr0




guest.network.device=cloudbr0

网桥名称是cloudbr0,当初自己图简短网桥用的是br0.
http://my.oschina.net/u/572653/blog/145465#OSC_h2_10

无法Create system VMs

日志:

2014-05-19 03:32:25,273 WARN  [kvm.resource.LibvirtComputingResource] (agentRequest-Handler-3:null) LibvirtException
org.libvirt.LibvirtException: Unable to create cgroup for s-30-VM: 没有那个文件或目录
        at org.libvirt.ErrorHandler.processError(Unknown Source)
        at org.libvirt.Connect.processError(Unknown Source)
        at org.libvirt.Connect.processError(Unknown Source)
        at org.libvirt.Connect.domainCreateXML(Unknown Source)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.startVM(LibvirtComputingResource.java:1213)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:3659)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1307)
        at com.cloud.agent.Agent.processRequest(Agent.java:498)
        at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:806)
        at com.cloud.utils.nio.Task.run(Task.java:83)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:701)
2014-05-19 03:32:54,166 WARN  [kvm.resource.LibvirtComputingResource] (agentRequest-Handler-2:null) LibvirtException
org.libvirt.LibvirtException: Unable to create cgroup for s-30-VM: 没有那个文件或目录
        at org.libvirt.ErrorHandler.processError(Unknown Source)
        at org.libvirt.Connect.processError(Unknown Source)
        at org.libvirt.Connect.processError(Unknown Source)
        at org.libvirt.Connect.domainCreateXML(Unknown Source)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.startVM(LibvirtComputingResource.java:1213)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:3659)
        at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1307)
        at com.cloud.agent.Agent.processRequest(Agent.java:498)
        at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:806)
        at com.cloud.utils.nio.Task.run(Task.java:83)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:701)

解决

北京-雪舞云飘<wufengcheng@163.com>4:03:52 PM
我在构建云的时候总是卡在create system vms在这直接报错报Unable to create cgroup for v-2-VM:No such file or directory怎么解决啊
广州-Bones(17034478)4:04:43 PM
@北京-雪舞云飘 有没有按照步骤一步一步进行配置?
北京-雪舞云飘<wufengcheng@163.com>4:05:12 PM
检查了N遍了,也没找到问题
北京-森林(120437047)4:05:32 PM
@北京-雪舞云飘   kvm? 
北京-雪舞云飘<wufengcheng@163.com>4:05:48 PM
对啊
北京-森林(120437047)4:07:17 PM
试试这组命令吧 
北京-森林(120437047)4:07:18 PM
  service libvirtd stop  # restart kvm  
service libvirtd start  
service rpcidmapd restart  
service rpcbind restart  
service nfs restart
 
北京-森林(120437047)4:07:32 PM
我是安装完kvm之后重启后就解决了 
上海-berlin.FBI<fanbailin@126.com>4:07:34 

正常的agent日志

2014-05-19 03:35:23,905 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) org.libvirt.LibvirtException: Requested operation is not valid: Target '/mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e' is already mounted
2014-05-19 03:35:23,906 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Attempting to unmount old mount libvirt is unaware of at /mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e
2014-05-19 03:35:24,075 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Succeeded in unmounting /mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e
2014-05-19 03:35:24,164 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Succeeded in redefining storage

无法创建Console Proxy VM

WARN  [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-22515378) Exception while trying to start console proxy
com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-1-VM]Scope=interface com.cloud.dc.DataCenter; id=1
        at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:921)
        at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:761)
        at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:745)
        at com.cloud.consoleproxy.ConsoleProxyManagerImpl.startProxy(ConsoleProxyManagerImpl.java:555)
        at com.cloud.consoleproxy.ConsoleProxyManagerImpl.allocCapacity(ConsoleProxyManagerImpl.java:941)
        at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:1666)
        at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:157)
        at com.cloud.vm.SystemVmLoadScanner.loadScan(SystemVmLoadScanner.java:118)
        at com.cloud.vm.SystemVmLoadScanner.access$100(SystemVmLoadScanner.java:35)
        at com.cloud.vm.SystemVmLoadScanner$1.reallyRun(SystemVmLoadScanner.java:88)
        at com.cloud.vm.SystemVmLoadScanner$1.runInContext(SystemVmLoadScanner.java:79)
        at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
        at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:701)
INFO  [c.c.h.HighAvailabilityManagerImpl] (HA-5:ctx-92dff8c3) checking health of usage server
WARN  [o.a.c.alerts] (HA-5:ctx-92dff8c3)  alertType:: 13 // dataCenterId:: 0 // podId:: 0 // clusterId:: null // message:: No usage server process running
INFO  [c.c.n.v.VpcManagerImpl] (VpcChecker-1:ctx-59fffc8c) Found 0 removed VPCs to cleanup
INFO  [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-e8d75566) Found a stopped console proxy, bring it up to running pool. proxy vm id : 1
WARN  [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-e8d75566) Exception while trying to start console proxy
com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-1-VM]Scope=interface com.cloud.dc.DataCenter; id=1

可能是内存不足:http://discussions.citrix.com/topic/346360-unable-to-create-a-deployment-for-vm/
查看Cloudstack服务方案→系统方案 consoleproxy.jpg 内存要求1G,VM总共才1G当然不够用

注册ISO时提示connection refused

搜索secstorage关键字,找到一个叫做“secstorage.allowed.internal.sites”的配置参数,设置为 可访问的IP如(192.168.1.1/24),敲回车确认即可。这个参数是说,Web服务器的网段在192.168.1.*;然后到管理节点的命令行重启服务: # service cloud-management restart
重新登陆界面,在此添加ISO模版,就不会出现“connection refused”的错误。

http://www.cnblogs.com/skyme/p/3157990.html

Cloudstack虚机命名

s是二级存储,v是控制台代理 r是虚拟路由,i是普通实例(instance)

Refusing to undefine while domain managed save image exists

http://liuzhijun.iteye.com/blog/1783698

virsh undefine vm1354695894990
error: Refusing to undefine while domain managed save image exists
http://www.redhat.com/archives/libvir-list/2011-July/msg01219.html
 managedsave
解决办法:virsh undefine $domain  --managed-save

桥接报错:Master connection not found or invalid

问题终于解决来。不是一般的菜鸟真的伤不起啊。

解决方法参考链接:http://www.360doc.com/content/12/0507/14/9318309_209243400.shtml

其实,问题很简单,就是要关闭网络管理器:

chkconfig NetworkManager off
service NetworkManager stop
复制代码
似乎在某文章里提到过这个东西,但我不知道怎么关闭,就忽略了,不知道把这个服务启动会怎么样。

cloud agent无需手动配置桥接

注意:官网给出的安装手册要求配置网桥,经过我多次的测试,这一步完全是误导大家,Agent端在网络方面完全不需要做任何的操作(并且官网提供的手册还存在错误,按照他写的配置会断掉物理网络,尽管官网提醒大家要提前准备IPMI,坑爹啊)。(From: http://my.oschina.net/lionel45/blog/176599#OSC_h2_6

4楼:tanthalas 发表于 2014-04-22 11:45 回复此评论
如果划分流量在多块网卡,仍需要手动建网桥。官方文档不能说全错,只是在一块网卡上模拟多个网卡而已。

修改系统vm的系统方案

需关机进行

资源不足,导致CloudStack创建Instance失败

http://www.xenme.com/2125

用笔记本虚拟机做Cloudstack实验简直就是 no zuo no die!!!

minion_id的影响

/etc/salt/minion_id缓存会造成主机名修改后salt-master不能更新。所以更改主机名后要清空该文件。

http://blog.segmentfault.com/yexiaobai/1190000000505397

强制关机后重启web ui 404

报错:

Another MySQL daemon already running with the same unix socket

原因多个Mysql进程使用了同一个socket,可能是上次没正常关闭mysql服务,机器重启后/var/lib/mysql/mysql.sock 还存在,但mysql服务没正常启动

两个方法解决:

直接把mysql.sock文件改名即可。也可以删除,推荐改名。

然后就可以启动mysql了。
最好不要强制关机。

Agent无法关闭,不能umount nfs

貌似是关机顺序导致的,先关Agent,在关management和nfs

01-基础学习/课程/毕业设计/issue.txt · 最后更改: 2020/04/07 06:34 由 annhe