第一:服务器一般都会用两块磁盘做RAID1作为系统盘,手动安装完第一台 *** 作系统,RAID1的功能是两块盘中具有相等的数据,所以两块盘都存在了刚刚安装好的linux系统,拔出一块系统盘(服务器认为你这块盘坏了),再插入一块新盘到刚刚拔出磁盘的位置,此时服务器会再次向新磁盘自动同步数据,保持1:1备份。接下来刚刚拔出的那块系统盘派上用场,把刚刚扒出来的那块有系统的盘插到另外一台无系统的服务器上,自动完成与另外一块盘的同步,以此类推,1生2,2生4,4生8,8生16,16生32
第二种:刻录无人值守光盘
第三种:PXE批量部署
PXE实例:
我3年前做过一套PXE部署系统(以下是当时用于机房部署系统的截图界面)。可以部署windows+linux的各个版本,部署服务器采用的windows系统(因为windows能通过easybcd制作syslinux引导),syslinux就可以成功引导起win和linux,引导成功后,调用kickstart制作的linux无人应答文件,wds &AKT制作的windows无人应答文件,完成系统安装。你的需求只需要安装统一的linux版本,所以相对来说比较容易,花两天学习下kickstart基本就能在虚拟机上实践成功,但是如果要应用到物理服务器,还需要考虑驱动,raid,格式化等问题
解决办法当然是PXE+Kickstart了,学会一次就能一直用很方便。
你需要准备:
1、交换机,用于连接Server和客户机(必须临时关闭DHCP)
2、部署用server主机(由此台主机接管DHCP服务)
3、其他一堆客户机(需要调节至PXE引导模式)
然后按照教程
https://andyx.net/pxe_kickstart_automatic_deployment_of_linux_system/对Server
主机进行部署PXE+Kickstart,完成之后客户端开机即可自动安装。
没有部署同时过100多台,但是曾经部署26台ECS集群,支撑1500左右tps。部署的方案是:阿里云ECS+镜像+d性伸缩+负载均衡。开发测试环境用的是Vagrant直接控制多台虚拟机,曾经也使用过VMware ESXi和VMware VCenter管理虚拟机集群
腾讯有个蓝鲸平台,只需要录入你的服务器ip就可以批量 *** 作。
还有一个ansible的来源运维工具。
还可以通过pexpect脚本,自己用python结合ssh搭建一个运维平台。
如果是批量买机器的话,各个云厂商都提供有接口,写个简单都shell就可以了。
阿里云前天刚发布的,叫什么servicefee,忘了,可视化部署,一键拉起,可设置拉起顺序,定时d性容灾,服务之间的调用可视化,其他数据也是可监控
会 python 和 shell 可以搞搞 fabric ,我在用,还不错!
看你部署应用还是系统,平台是什么。
系统简单,做个模板机,复制就行了。
应用也不麻烦,跟上边的一样做个镜像就行,或者用批量管理工具ansible salt 这类的工具。云服务器的话,镜像市场也有公用的。
ansible,puppet和chef是常用的自动化运维工具。你说的需求用这三个都能做
1.部署 *** 作系统,制作系统模板,批量创建或调用api接口即可
2.部署应用软件,可使用自动化工具如ansible或者编写脚本来批量部署
linux有类似ghost那样的克隆工具,推荐clonezilla。ghost for Linux也可以。
另外,Linux下的dd命令可以完成一个源驱动器对目标驱动器的镜像 *** 作。
要实现批量部署,前提是标准化,和自动化1.自动化可以完成大量重复性工作
2.标准化是部署对象必须有一定的标准
比如:账号user1密码是usr1,user2密码是usr2.。。
如题:
假设那500台机子IP为 192.168.1.1-250,192.168.2.1-250
第一种情况(简单):
管理节点已经ssh公钥传所有主机
[root@master ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)?
[root@master ~]# ssh-copy-id /root/.ssh/id_rsa.pub 192.168.1.1
我们只要执行两个循环就能完成需求
for i in {1..250}do ssh 192.168.1.$i "echo 1 > /etc/a.txt "done
for i in {1..250}do ssh 192.168.2.$i "echo 1 > /etc/a.txt "done
第二种情况只能用密码登陆
要求是IP,密码必须满足标准化
我这边只有一个ssh捕捉信号的脚本(完成非交互式输入密码),虽然没有针对需求,但楼主可以参考下。结合第一种方法完成需求。
vim /ssh.sh
#!/usr/bin/expect
# 设置超时时间为 60 秒
set timeout 60
# 设置要登录的主机 IP 地址
set host 192.168.0.4
# 设置以什么名字的用户登录
set name root
# 设置用户名的登录密码
set password 123456
#spawn 一个 ssh 登录进程
spawn ssh $host -l $name
# 等待响应,第一次登录往往会提示是否永久保存 RSA 到本机的 know hosts 列表中;等到回答后,在提示输出密码;之后就直接提示输入密码
expect {
"(yes/no)?" {
send "yes\n"
expect "assword:"
send "$pasword\n"
}
"assword:" {
send "$password\n"
}
}
expect "#"
# 下面测试是否登录到 $host
send "uname\n"
expect "Linux"
send_user "Now you can do some operation on this terminal\n"
# 这里使用了 interact 命令,使执行完程序后,用户可以在 $host 终端进行交互 *** 作。
Interact
其实我觉得,部署首选 git 。因为这是同步软件,你修改后提交,服务器那边收到的是修改信息,数据量小很多。
而且因为修改都是基于 log 记录,如果被该错了,也能发现问题。
当然具体看你的数据都是什么。
其次就是 scp 。这东西是基于 ssh 的文件传输。加密的。用起来基本和 ftp 一样,而且你可以设置服务器只允许证书登录,这样黑客就不能通过破解服务器的登录密码实现,必须先黑了你的机器拿到证书文件他才能登录。
另外 git 也支持使用加密的 ssh 方式传输数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)