ceph安装日志

# yum install ceph
报错如下
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
错误:xz compression not available
网上查找原因:

由于CentOS6的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题。

解决方法:

1.到http://ftp.riken.jp/Linux/fedora/epel/下载epel-release-latest-6.noarch.rpm

2.卸载epel-release-latest-7.noarch.rpm:yum remove epel-release

3.清空epel目录:rm -rf /var/cache/yum/x86_64/6/epel/

4.安装epel6:rpm -ivh epel-release-latest-6.noarch.rpm

最后怀疑yum问题。卸载了yum重新安装。
卸载与安装yum过程如下

查看已安装的yum包

#rpm –qa|grep yum

卸载软件包

#rpm –e –nodeps yum

下载安装依赖包python python-iniparse
1. 下载python2.7.5,保存到 /data/qtongmon/software
http://www.python.org/ftp/python/
2. 解压文件
tar xvf Python-2.7.5.tar.bz2

3. 创建安装目录
mkdir /usr/local/python27

4. 安装python
./configure --prefix=/usr/local/python27

# ./configure --prefix=/usr/local/python27
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for --enable-universalsdk... no
checking for --with-universal-archs... 32-bit
checking MACHDEP... linux2
checking EXTRAPLATDIR... 
checking for --without-gcc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/king/mysoft/Python-2.7.9':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
看来是因为没有GCC(可能卸载之前的yum误卸载了)
下载了一个gcc 的rpm包,安装又失败了下载地址
# rpm -ivh gcc-4.4.7-11.el6.x86_64.rpm 
error: Failed dependencies:
    cloog-ppl >= 0.15 is needed by gcc-4.4.7-11.el6.x86_64
    cpp = 4.4.7-11.el6 is needed by gcc-4.4.7-11.el6.x86_64
没有 cloog-ppl >= 0.15
于是下载一个cloog-ppl-0.15.10.tar.gz
解压安装
# tar -xzf cloog-ppl-0.15.10.tar.gz
# mkdir /usr/local/cloog-ppl
# cd cloog-ppl-0.15.10
# ./configure --prefix=/usr/local/cloog-ppl/
输出如下
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/king/mysoft/cloog-ppl-0.15.10':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
没有gcc.看来gcc和cloog-ppl互相依赖。死循环了。
换用rpm包安装试试
下载地址
# rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm 
warning: cloog-ppl-0.15.7-1.2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature,
 key ID fd431d51: NOKEY
error: Failed dependencies:
    libppl.so.7()(64bit) is needed by cloog-ppl-0.15.7-1.2.el6.x86_64
    libppl_c.so.2()(64bit) is needed by cloog-ppl-0.15.7-1.2.el6.x86_64
 
这个先跳过不装。先装一个cpp4.4.7看看能不能解决问题
下载地址
# rpm -ivh cpp-4.4.7-3.el6.x86_64.rpm 
warning: cpp-4.4.7-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
    libmpfr.so.1()(64bit) is needed by cpp-4.4.7-3.el6.x86_64
 
还是不行。那就继续安装刚才的cloog-ppl-0.15.7-1.2.el6.x86_64.rpm,解决libppl.so.7和libppl_c.so.2问题
网上查找相关文章,得知可能是缺了这两个包……(参考文章《RedHat安装GCC问题---解决依赖问题》)
mpfr-2.4.1-6.el6.x86_64.rpm
ppl-0.10.2-11.el6.x86_64.rpm
# rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:mpfr                   ########################################### [100%]
# rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm 
warning: ppl-0.10.2-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:ppl                    ########################################### [100%]
继续安装
# rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm 
warning: cloog-ppl-0.15.7-1.2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:cloog-ppl              ########################################### [100%]
 
# rpm -ivh cpp-4.4.7-3.el6.x86_64.rpm 
warning: cpp-4.4.7-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:cpp                    ########################################### [100%]
 
# rpm -ivh gcc-4.4.7-11.el6.x86_64.rpm 
error: Failed dependencies:
    cpp = 4.4.7-11.el6 is needed by gcc-4.4.7-11.el6.x86_64
看来cpp版本还是不够
于是下载一个cpp-4.4.7-11.el6.x86_64.rpm
下载地址
ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.6/x86_64/os/Packages/cpp-4.4.7-11.el6.x86_64.rpm
# rpm -ivh cpp-4.4.7-11.el6.x86_64.rpm 
warning: cpp-4.4.7-11.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
Preparing...                ########################################### [100%]
    file /usr/bin/cpp from install of cpp-4.4.7-11.el6.x86_64 conflicts with file from package cpp-4.4.7-3.el6.x86_64
    file /usr/libexec/gcc/x86_64-redhat-linux/4.4.4/cc1 from install of cpp-4.4.7-11.el6.x86_64 conflicts with file from package cpp-4.4.7-3.el6.x86_64
这两行输出开始被我忽略了,以至于后面安装gcc还提示同样的错误(cpp = 4.4.7-11.el6 is needed by gcc-4.4.7-11.el6.x86_64)
这两行警告是不可忽略的,它是在提示我们有文件冲突,安装cpp-4.4.7-11.el6.x86_64时,/usr/bin/cpp已存在,是在安装cpp-4.4.7-3.el6.x86_64的时候产生的。再次安装cpp-4.4.7-11.el6.x86_64并不会删除之前的这个cpp文件。要想让cpp-4.4.7-11.el6.x86_64安装成功,需要卸载之前的cpp-4.4.7-3.el6.x86_64
找到之前安装的cpp-4.4.7-3.el6.x86_64并卸载
# rpm -qa | grep cpp
mcpp-2.7.2-4.1.el6.x86_64
cpp-4.4.7-3.el6.x86_64
libmcpp-2.7.2-4.1.el6.x86_64
# rpm -e cpp-4.4.7-3.el6.x86_64
注意:卸载的时候不要再加.rpm后缀否则会提示错误(如下:)
# rpm -e cpp-4.4.7-3.el6.x86_64.rpm 
error: package cpp-4.4.7-3.el6.x86_64.rpm is not installed
卸载完cpp-4.4.7-3.el6.x86_64再安装cpp-4.4.7-11.el6.x86_64
然后检查一下是否安装成功
# rpm -qa | grep cpp
cpp-4.4.7-11.el6.x86_64
mcpp-2.7.2-4.1.el6.x86_64
libmcpp-2.7.2-4.1.el6.x86_64
abrt-addon-ccpp-2.0.8-26.el6.centos.x86_64
然后安装gcc
# rpm -ivh gcc-4.4.7-11.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:gcc                    ########################################### [100%]
然后安装python
#./configure --prefix=/usr/local/python27
....python安装完毕后安装yum
# tar -xzf yum-3.2.28.tar.gz
# cd yum-3.2.28
# ./yummain.py install yum
CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/yum.conf
安装错误,提示没有yum.conf这个配置文件。建一个空文件
# touch /etc/yum.conf
# ./yummain.py install yum
base                           | 3.7 kB     00:00     
base/primary_db          | 4.7 MB     00:01     
ceph-noarch  |  951 B     00:00ceph-noarch/primary                       | 8.1 kB     00:00     
ceph-oarch      29/29
dl.fedoraproject.org_pub_epel_7_x86_64_ | 4.3 kB     00:00     
dl.fedoraproject.org_pub_epel_7_x86_64_/primary_db     | 4.2 MB     00:02     
Error: xz compression not available
 
可能是pyliblzma问题下载一个装试试
# rpm -ivh pyliblzma-0.5.3-3.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:pyliblzma              ########################################### [100%]
继续安装yum
# cd yum-3.2.28
# ./yummain.py install yum
.......
Installed:
  yum.noarch 0:3.2.29-75.el6.centos                                                                                     Dependency Updated:
  python-urlgrabber.noarch 0:3.9.1-11.el6                                                                                 Complete!
yum安装成功
成功了。原来是缺这个东西。
****************************************************************
注:后来想在公司的集群上安装ceph,正好遇到没有yum的问题,用同样方法安装yum,却行不通了。输出与报错如下
# ./yummain.py install yum
Traceback (most recent call last):
  File "./yummain.py", line 27, in <module>
    from yum import Errors
  File "/root/somesoft/yum-3.2.28/yum/__init__.py", line 23, in <module>
    import rpm
ImportError: No module named rpm
看来是python缺少了rpm模块
但是查询本地的python相关模块时,发现已安装了python-rpm
# rpm -qa | grep python
python-elementtree-1.2.6-4
rpm-python-4.3.3-13_nonptl
dbus-python-0.22-12.EL.5
python-2.3.4-14.1
libxml2-python-2.6.16-6
python-devel-2.3.4-14.1
python-sqlite-1.1.6-1
python-ldap-2.0.1-2
python-urlgrabber-2.9.6-2
那,重新安装一下吧
在这个链接
我本机系统是centos4.3,选了个4.4的rpm版本下载,如下。结果又一堆错
# rpm -ivh python-rpm-4.4.2.3-20mnb2.x86_64.rpm 
warning: python-rpm-4.4.2.3-20mnb2.x86_64.rpm: V3 DSA signature: NOKEY, key ID 70771ff3
error: Failed dependencies:
        python >= 2.5 is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        rpm = 1:4.4.2.3-20mnb2 is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        python-base >= 2.5 is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        libbeecrypt.so.7()(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        libc.so.6(GLIBC_2.4)(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        librpm-4.4.so()(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        librpmbuild-4.4.so()(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        librpmdb-4.4.so()(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        librpmio-4.4.so()(64bit) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        rtld(GNU_HASH) is needed by python-rpm-4.4.2.3-20mnb2.x86_64
        rpmlib(PayloadIsLzma) <= 4.4.6-1 is needed by python-rpm-4.4.2.3-20mnb2.x86_64
一个一个排除吧。python版本2.7,这个没错。rpm版本比较低(跟系统版本一致的),达不到4.4版本:
# rpm --version
RPM version 4.3.3
可能是python-rpm版本比系统版本高,先换个python-rpm4.3的试试
****************************************************************

继续安装ceph
配置yum源
# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
 
使用yum安装ceph-deploy工具
# yum install ceph-deploy
...
ceph-deploy工具安装成功(使用上述方法,在MJ00,MJ01,MJ03,MJ04上也都安装了ceph-deploy工具)
 
接下来进行静态IP设置。打开/etc/sysconfig/network-scripts/ifcfg-eth0文件做以下设置。
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0    //这个跟配置文件名ifcfg-eth0中的eth0保持一致
BOOTPROTO=static    //这里启动协议设为静态,保证IP固定不变
BROADCAST=192.168.0.1    //网关。前三个数和你要设置的IP的前三个数保持一致。最后一个为1
HWADDR=00:0c:29:15:38:68    //网卡地址。获取方式下面再做解释
ONBOOT=yes    
TYPE=Ethernet
IPADDR=192.168.0.102    //你要设置的IP
NETMASK=255.255.255.0
NETWORK=192.168.0.0
 
上面的网卡地址,在/etc/udev/rules.d/70-persistent-net.rules文件中获取
我本来有两张网卡,eth1和eth0,但是在执行ifconfig命令的时候,只显示eth1不显示eth0,于是我就把之前的eth0那一行注释掉了,把之前的eth1那一行的"eth1"修改为"eth0"。
修改完ifcfg-eth0,然后保存退出。重启网络服务
#service network restart
 
在MJ00,MJ02,MJ03,MJ04四台机器之间设置互信关系,方便彼此间实现无密码登陆和传输数据。

1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa

2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.0.100,192.168.0.101,192.168.0.102,192.168.0.103这四台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令,将公钥复制到其它三台服务器上(此处以192.168.0.100为例,用户为root,其它三台步骤相同,注意修改下IP哦!)

#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.101
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.102
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.103
以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆
3、设置alias
设置alias别名可以更方便的登陆集群内有信任关系的机器。设置方法:
在每台机器~/.bash_profile的最后加上以下几行
alias MJ00="ssh root@192.168.0.100"
alias MJ02="ssh root@192.168.0.101"
alias MJ03="ssh root@192.168.0.102"
alias MJ04="ssh root@192.168.0.103"
 
然后执行#source ~/.bash_profile
然后执行#MJ00 (不用再执行ssh root@192.168.0.100)就能登上MJ00这台机器了
 
接下来应该使用ceph-deploy来安装ceph了,但是虚拟机连不上网。找到以下上网的方法,希望既能各个节点之间能连通,同时又能以静态IP来上网。后来找到一个网上的方法,捣鼓一番之后,既不能让虚拟机上网,同时连之前的节点之间的通信也坏掉了。经过几天的回忆&尝试,还是不能恢复节点间的通信。无奈之下,将虚拟机的虚拟网络设置恢复默认设置,同时又新建了几台虚拟机。
此时,虚拟机的虚拟网络设置界面如下
  
此时可以看见子网IP网段发生改变,变为192.168.136.0
如果希望虚拟机和物理机之间能够通信,虚拟机的IP就需要和这个子网IP在一个网段。
点击"DHCP"设置,可以查看到dhcp默认分配的IP范围,和IP默认租用时间。
希望虚拟机能够通过dhcp上网,就需要把虚拟机IP设置在这个范围内。IP的默认租用时间设置长一点,尽量避免频繁的更换IP
虚拟机MJ01上配置文件改动如下
$ vim /etc/sysconfig/network-scripts/ifcfg-eth0
 1 DEVICE=eth0
 2 BOOTPROTO=static
 3 BROADCAST=192.168.136.255
 4 HWADDR=00:0c:29:e3:f2:5b
 5 ONBOOT=yes
 6 TYPE=Ethernet
 7 IPADDR=192.168.136.201
 8 NETMASK=255.255.255.0
 9 NETWORK=192.168.136.2
10 IPV6INIT=no
11 USERCTL=no
12 DNS1=101.226.4.6
13 DNS2=114.114.114.114
其中
网关( 9 NETWORK=192.168.136.2)是从“NET设置"里面查看
DNS从物理机的命令行界面执行"ipconfig /all"命令查看
修改完毕之后,重启网络服务
然而后来又碰到以下问题
[root@MJ01 ~]# service network restart
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0: 错误:激活连接失败:Device not managed by NetworkManager or unavailable
                                                           [失败]
然后执行"ifconfig"命令,发现没有eth0网卡
[root@MJ01 ~]# ifconfig
lo       Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9420 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9420 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:711016 (694.3 KiB)  TX bytes:711016 (694.3 KiB)
这个问题的解决方案
解决方案:
1、#Remove Network Manager from startup Services.
chkconfig NetworkManager off
2、#Add Default Net Manager
chkconfig network on
3、#Stop NetworkManager first
service NetworkManager stop
4、#and then start Default Manager
service network start
5、#restart network
service network restart
 
然后MJ01虚拟机能够和物理机通信了。然而还是上不了网。然后不想在虚拟机上网的事情上浪费时间了。
先把这几台机器之间的通信解决,到时候使用本地安装的方式来搭建ceph集群
然后解决MJ02虚拟机的通信问题。ifcfg-eth0文件修改如下
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.136.255
HWADDR=00:0c:29:15:38:68
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.136.202
NETMASK=255.255.255.0
NETWORK=192.168.136.2
DNS1=101.226.4.6
DNS2=114.114.114.114
 
然后重启network服务,执行ifconfig发现没有eth0网卡,却是eth1网卡。
 
/etc/sysconfig/network-scripts/这个路径下没有ifcfg-eth1文件,这个eth1是从哪里来的呢?
然而重启虚拟机,这个问题就解决了。于是它是怎么发生的,已经不重要了。于是就继续之前的安装了。
然后发现从物理机xshell登不上虚拟机,经过一番查看,发现是虚拟机设置里面没有设置为"NAT",修改之后,
物理机就能ping通虚拟机了,然后xshell也能登陆了。
然后是MJ03,遇到的问题跟上面类似,所以很快搞定。但是到MJ04机器的时候,又遇到不能登陆的状况。
后来发现是BROADCAST这个参数被设置成了192.168.136.2。修改成192.168.136.255然后重启服务就OK了。
在前3台设置中,没注意这个参数的重要性,这个参数表示广播地址。
同样设置MJ00,依然不能登陆。最后发现是防火墙没有关闭。关闭防火墙,然后可以登陆了。 
但是登陆之后,再次开启防火墙,也同样能登陆了。虽然暂时不能通晓其中玄机,但事实证明关闭一下防火墙也是解决问题的办法之一。
至此,之前的五台虚拟机都能够重新登陆,经过测试,彼此之间都能ping通,恢复通信了。
原文地址:https://www.cnblogs.com/flyfish919/p/7073527.html