相信大家都使用过分布式存储,而在分布式存储中较为出色的非ceph莫属了,但是这里就不深入聊ceph啦,我们只是聊聊安装ceph时遇到的问题。
ceph需要多台主机进行ssh互信。三台还能忍受,但是当超过三台那工作量想想就令人发指,而且都是重复性的动作。这类操作必须要优化掉。
因此用shell写了一个多服务器互信脚本,仅供大家借鉴参考。具体脚本已经上传至github可在本公众号代码仓库中找到install_ceph进行下载使用。
代码不多说了比较简单,相信大家都能看懂!
这里只讲几点我当时的书写思路:
install_ceph.sh是主节点安装程序,本着模块化的调用的方针,整个脚本脉络还是很清晰的。脚本由多个小函数组成,每个函数对应不同的功能。然后由main函数再进行调用。
互信我们需要获取本机IP地址,那就写了名为get_localip的函数。
get_localip(){ ipaddr='172.0.0.1' ipaddr=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}') echo "$ipaddr" }
然后最后边是主函数main
main(){ yum_update yum_config iptables_config sysctl_config system_config ssh_config ulimit_config change_hosts rootssh_trust yum_install_ceph config_ceph install_ceph if [ "$?" != 0 ]; then remove_ceph install_ceph_repo_url mon_admin check_status else mon_admin fi if [ "$?" != 0 ]; then remove_ceph install_ceph_repo_url mon_admin check_status else mon_admin fi } main > ./setup.log 2>&1
在这里我们实现各个方法的组合调用,最后我们只需要执行main函数就行了。同样我们不想执行哪个方法,就可以注释掉main函数中哪个方法的名字就可以了。具体使用方法见README.md
波哥写的不只是技术,而是人生!是不是灰常牛X呀!!哇咔咔咔咔!
PS:shell其实我并没有深入研究过,这么多年也就是赶着用赶着写。好在非常简单易用。写shell有种手短的感觉,shell类似那种近身肉搏型的,快,准,狠,寸劲十足。所以我们在日常项目中时长会用shell来完成最后一公里的任务!
最近哥又在憋大招,波哥品质,坚若磐石。
伙伴们拭目以待吧!
贝贝!