Linuxでのネットワーク起動サーバのインストールと構成方法(pxe+tftp+dhcpd)

6359 ワード

背景:
大規模なサーバのインストールでは、サーバのインストールを一括自動化する方法が必要であり、日常的な作業量を減らすことができますが、一括自動化インストールサーバの基礎はネットワーク起動サーバ(bootserver)であり、以下はネットワーク起動サーバのインストールと構成方法であり、参考にしてください.
用語の説明:
PXE:(Pre-boot ExecutionEnvironment)は、ローカルハードディスク、オプティカル(光学式)ドライブなどのデバイスではなく、コンピュータがネットワークを介して起動できるIntelプロトコルです.現代のNICでは、pxeをサポートするromチップが内蔵されているのが一般的です.コンピュータが起動すると、BIOSはpxe dientをメモリに呼び出して実行し、コマンドメニューを表示し、ユーザーが選択した後、PEXdientは遠隔地に置かれたオペレーティングシステムをネットワークを通じてローカルにダウンロードして実行する.
DHCP:(Dynamic Host Control Protocol)動的ホスト制御プロトコルで、顧客にIPアドレスを集中的かつ動的に割り当てる
TFT P:(trivial file transfer protocol)は、コストの小さいファイル転送プロトコルであり、文法はftpに似ており、簡単で効率的であるため、ネットワークデバイスのosと構成更新によく用いられる.
PXE Client Api(アーキテクチャ)
上図の説明:BIOSがPXE Clientをメモリにロードする時、DHCP ClientとTFT P Clientの能力を持つ.
PXE ClientはDHCP Client能力を備えており、DHCPサーバを介してIPアドレスを取得することができる.
PXE ClientはTFT P Client能力を備えており、TFT Pからkernel p_をダウンロードできるw_picpathなどのファイル.
PXE起動フローチャート(pxe boot)
上図の起動手順は以下のとおりです.
1.PXE ClientはUDP 67ポートにDHCPDDISCOVERメッセージをブロードキャストする.
2.DHCP SERVERまたはDHCP Proxyは、ブロードキャストメッセージを受信後、DHCPOFFER(ipアドレスを含む)メッセージをPXE Clientの68ポートに送信する.
3.PXE ClientはDHCPREQUESTメッセージをDHCP SERVERに送信、起動ファイル(boot file name)を取得する.
4.DHCP SERVERはDHCPACK(Network Bootstrap Program file nameを含む)メッセージをPXE Clientに送信する.
5.PXE Clientは、NBP(Network Bootstrap Program)ファイルをBoot Serverに取得する.
6.PXE Client TFTP SERVERからNBPをダウンロードし、クライアントでNBPファイルを実行する
注意:NBPが初期化を実行すると、NBPは自分のデフォルトの方法でTFT P SERVERから他の必要なプロファイルをダウンロードする.
この時点でPXE起動プロセスは完了しており、残りの作業はNBPで実行する.
例えば、pxelinux.0(NBP)彼はdefaultプロファイルをダウンロードしてメニューを表示し、必要に応じて異なるkernel p_を起動します.w_picpath.
RIS(windowインストール)のNBPの場合は、Windows boot loaderを起動してインストール配備widowsタスクを実行します
PXE BOOTサーバー構成プロセス
[root@node1 ~]# yum install tfpt tftp-server dhcp vsftpd syslinux #        
[root@node1 ~]# mkdir /var/ftp/pub/centos-6.4-x86_64 -pv
[root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos-6.4-x86_64/
[root@node1 centos-6.4-x86_64]# ls
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
p_w_picpaths           RPM-GPG-KEY-CentOS-6

DHCPサービスの構成:
PXEブートプロセス中、PXE ClientはDHCP Serverを介してipアドレス、NBPファイル名を取得し、TFTP SERVERからNBPファイルをダウンロードしてクライアントで実行し、コンピュータを起動する
[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@node1 ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 172.16.0.1;
default-lease-time 43200;
max-lease-time 86200;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#     subnet
subnet 192.168.10.0 netmask 255.255.255.0 {
        range 192.168.10.11 192.168.10.100;
        option routers 192.168.10.10;
 next-server 192.168.10.10;#TFTP Server ip  
        filename="pxelinux.0";#bootstrap   (NBP)
}

注意:/etc/dhcpd.confプロファイルのfilename「pxelinux.0」.ファイルディレクトリはtftpに対するルートディレクトリ(デフォルトは/tftpboot)であり、
ファイルの絶対パスは/tftpboot/pxelinuxです.0";もちろん他のパスとして指定することもできる.
dhcpdサービスの再起動
[root@node1 ~]# service dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
[root@node1 ~]# ss -uanlp | grep dhcpd
UNCONN     0      0                         *:67                       *:*      users:(("dhcpd",4883,7))

tftpサーバの構成
[root@node1 xinetd.d]# chkconfig tftp on
[root@node1 xinetd.d]# service xinetd restart
Stopping xinetd:                                           [FAILED]
Starting xinetd:                                           [  OK  ]
[root@node1 xinetd.d]# service xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[root@node1 ~]# ss -uanlp | grep xinetd
UNCONN     0      0                         *:69                       *:*      users:(("xinetd",5007,5))
UNCONN     0      0                         *:69                       *:*      users:(("xinetd",5000,5))

ブートファイルの準備:
[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
[root@node1 ~]# ls /var/lib/tftpboot/
boot.msg  pxelinux.0  splash.jpg  vesamenu.c32
[root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@node1 ~]# ls /var/lib/tftpboot/
boot.msg  initrd.img  pxelinux.0  splash.jpg  vesamenu.c32  vmlinuz
[root@node1 tftpboot]# mkdir pxelinux.cfg
[root@node1 tftpboot]# cd pxelinux.cfg/
[root@node1 pxelinux.cfg]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg default
[root@node1 pxelinux.cfg]# chmod +w default
[root@node1 pxelinux.cfg]# mkdir /var/ftp/pub/kickstart/
[root@node1 pxelinux.cfg]# vim default
menu background splash.jpg
menu title Welcome to CentOS 6.4 from PXE!
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.10.10/pub/kickstart/centos6.cfg
[root@node1 ~]# yum -y install system-config-kickstart
[root@node1 ~]#system-config-kickstart

1.タイムゾーンを選択し、rootパスワードを設定する
2、インストールソース(パッケージの場所)を設定し、プロトコルを選択する
3.インストールソフトウェアの選択
すべての設定が完了すると、指定したディレクトリにファイルを保存します.名前は前の/var/lib/tftpboot/pxelinuxと同じです.cfg/defaultではksパスが一致し、名前はcentos 6である.cfg、パーティション情報を追加し、テストを行う:
[root@node1 ~]# vim centos6.cfg
# Partition clearing information
clearpart --all --initlabel
#      
part /boot --fstype=ext4 --size=200
part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
[root@node1 ~]# cp centos6.cfg /var/ftp/pub/kickstart/
[root@node1 ~]# service vsftpd start

テスト:
ソフトウェアのインストール手順
インストール後にログインを開始し、操作完了!
転載先:https://blog.51cto.com/lanlian/1308030