% % Source.tex % % Fork Sand IT Manual % % Copyright (C) 2018, Fork Sand, Inc. % Copyright (C) 2017, Jeff Moe % Copyright (C) 2017 Aleph Objects, Inc. % % This document is licensed under the Creative Commons Attribution 4.0 % International Public License (CC BY-SA 4.0) by Fork Sand, Inc. % \section{Hardware} \subsection{Cluster Evolution} Forksand started deployment on dedicated servers. \vspace{0.6cm} First stage. Exclusively dedicated servers (deprecated) \vspace{0.4cm} \centering \includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] {sharkfork-cabling-1-dedicated-vlan.pdf} \\ % % \vspace{0.2cm} \raggedright Second stage. Dedicated servers along with a colocation cabinet. Flat hierarchy. (deprecated) \vspace{0.1cm} In progress, services were being migrated one after another to a colocation instance. On the next stage hierarchy becomes vertical. \\ \vspace{0.1cm} \centering \includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] {sharkfork-cabling-2-mixed-vlan.pdf} \\ % % \raggedright Third stage. Dedicated servers buffered by a colocation cabinet. Vertical hierarchy. (deprecated) \vspace{0.4cm} \centering \includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] {sharkfork-cabling-3-colo-dedicated.pdf} \\ % % \vspace{0.2cm} \raggedright Fourth stage. Dedicated servers discarded. Colocation cabinet buffered only with a firewall. (current) \vspace{0.4cm} \centering \includegraphics[width=115mm,trim=20mm 20mm 20mm 20mm] {sharkfork-cabling-4-final-colocation.pdf} \\ % % \vspace{0.2cm} \raggedright Final stage. Firewall discarded. Single colocation cabinet. (in process) \vspace{0.4cm} \centering %\includegraphics[width=115mm,trim=10mm 10mm 10mm 10mm] %{sharkfork-cabling-4-single-colocation.pdf} \\ % % \raggedright \newpage \section{Cluster Hardware Overview} The cluster will require rackmountable equipment: \begin{itemize} \item GNU/Linux Servers \end{itemize} \begin{minipage}{0.9\textwidth} \subsection{Sharkfork 21U hardware instance} \label{sec:hardware-sharkfork-21U} %\includepdf[width=150mm,offset=0 15,clip] %{sharkfork-21U.pdf} \includegraphics[keepaspectratio=true,height=0.80\textheight,width=150mm,angle=0] {sharkfork-21U.png} % \vspace{150mm} \label{fig:sharkfork-21U} %\vspace{60mm} \end{minipage} \newpage %\subsubsection{Sharkfork 21U detail hardware description} \label{sec:hardware-description-sharkfork-21U} \definecolor{secondary-brown}{HTML}{F3E2C3} % HEX # F3E2C3 R:243 G:226 B:195 C:0 M:7 Y:20 K:5 \definecolor{primary-blue}{HTML}{A1F4FF} % HEX # A1F4FF R:161 G:244 B:255 C:37 M:4 Y:0 K:0 \definecolor{primary-brown}{HTML}{B07E3B} % HEX # B07E3B R:176 G:126 B:56 C:0 M:28 Y:68 K:31 \definecolor{nonbrand-dark-blue}{HTML}{184B6D} % HEX # 184B6D R:19 G:70 B:109 C:0 M:28 Y:68 K:31 \newcommand{\nodeUnitName}[4]{ \rowcolor{#3}\vspace{-1pt} {{\grenewcommand{\currentColor}{#3}}} {{\grenewcommand{\currentTextColor}{#4}}} \Large{\textcolor{#4}{#1}} & \rule[-0.5em]{0pt}{1.8em} \Large{\textcolor{#4}{#2}} \\ \rowcolor{#3}\vspace{-1pt} } \newcommand{\nodeUnitParameter}[1]{ \rule[1.0em]{0pt}{-1em} & \small{\textcolor{\currentTextColor}{ - #1}} \\ \rowcolor{\currentColor}\vspace{-1pt} } \newcommand{\nodeUnitLastParameter}[1]{ \rule[-0.5em]{0pt}{0em} & \small{\textcolor{\currentTextColor}{ - #1}} \\ \tabucline[0.2pt]{1-2} } \newcommand{\nodeUnitSetItem}[2]{ \rowcolor{\currentColor}\vspace{-1pt} \rule[-0.3em]{0pt}{0em}\small{\textcolor{\currentTextColor}{ ~#1}} & \small{\textcolor{\currentTextColor}{#2}} \\ \tabucline[0.2pt]{1-2} } \newcommand{\nodeUnitSetLastItem}[2]{ \rowcolor{\currentColor}\vspace{-1pt} \rule[-0.3em]{0pt}{0em}\small{\textcolor{\currentTextColor}{ ~#1}} & \small{\textcolor{\currentTextColor}{#2}} \\ \tabucline[2pt]{1-2} } %\newcommand{\nodeUnitSetNotes}[2]{ % \pickColor{#2} % \rule[-0.3em]{0pt}{0em}\small{Notes:} & \small{#1} \\ \tabucline[2pt]{1-2} %} \newcommand{\currentColor}{secondary-brown} \newcommand{\currentTextColor}{secondary-brown} \begin{table}[!htb] %\caption{IP configs of nodes} \label{tab:sharkNodeIPConfig} \begin{tabu}{|[2pt]l|[2pt]p{14.5cm}|[2pt]} \tabucline[2pt]{1-2} \multicolumn {1}{|[2pt]l|[2pt]}{\rule[-0.7em]{0pt}{2em} Qty}& \multicolumn {1}{p{13cm}|[2pt]}{ Description} \\ \tabucline[2pt]{1-2} %%% UNIT %%% % Unit name \nodeUnitName{2}{Iris FW1100 - Firewall System}{secondary-brown}{ao-black} % Unit configuration parameters \nodeUnitParameter{ 1U Form Factor ~~- Single Intel Xeon D-1587 CPU } \nodeUnitParameter{ Up to 128GB DDR4 ECC Reg Memory } \nodeUnitParameter{ Dual 10G SFP+ and Six Gigabit Ethernet } \nodeUnitLastParameter{ 400W Platinum Level Redundant Power Supply } % Unit has a set of components parameters \nodeUnitSetItem {2}{ 8GB DDR4 2666MHz ECC Registered DIMM } %\nodeUnitSetItem {1}{ No Operating System. Include testing% % and customer OS preference in notes. } %\nodeUnitSetItem {1}{ Return to Depot Warranty (3 Year Hardware% % Warranty with Standard Advance Parts Replacement) } \nodeUnitSetItem {1}{ 128GB SATA DOM } \nodeUnitSetLastItem {1}{ Intel 10G Dual Port RJ45 Ethernet Adapter } % Unit ends with notes, pass "none" parameter if no notes %\nodeUnitSetNotes { none } %%% END UNIT %%% %%% UNIT %%% % Unit name \nodeUnitName{1}{Iris NV2225}{primary-blue}{ao-black} % Unit configuration parameters \nodeUnitParameter{ 2U Form Factor ~~- Dual Intel Xeon SP Processor } \nodeUnitParameter{ Up to 768GB DDR4 2133MHz ECC Registered Memory } \nodeUnitParameter{ Integrated IPMI 2.0 + KVM with dedicated LAN } \nodeUnitParameter{ Intel x550 Quad port 10G Ethernet } \nodeUnitLastParameter{ 1600W Redundant High-efficiency Power Supply } % Unit has a set of components parameters \nodeUnitSetItem{2}{ Intel Xeon Gold 5115 10C 2.4GHz 13.75MB Cache } \nodeUnitSetItem{1}{ 128GB DDR4 2666MHz ECC Reg (4 x 32GB) } \nodeUnitSetItem{1}{ Samsung 960 EVO M.2 NVME SSD 500GB } \nodeUnitSetItem{4}{ Ultrastar SN200 800GB NVMe SSD } %\nodeUnitSetItem{1}{ No Operating System. Include testing and customer% % OS preference in notes. } %\nodeUnitSetItem{1}{ Return to Depot Warranty (3 Year Hardware Warranty% % with Standard Advance Parts Replacement) } \nodeUnitSetLastItem{1}{ Intel 10G Dual Port RJ45 Ethernet Adapter } % Unit ends with notes, pass "none" parameter if no notes %\nodeUnitSetNotes { none } %%% END UNIT %%% %%% UNIT %%% % Unit name \nodeUnitName{2}{Iris 1292-R4T}{primary-brown}{ao-black} % Unit configuration parameters \nodeUnitParameter{ 1U Form Factor ~~- Dual Intel Xeon SP Processors } \nodeUnitParameter{ Intel C620 Chipset with QPI up to 9.6GT/sec } \nodeUnitParameter{ Up to 768GB DDR4 2666MHz ECC Registered Memory } \nodeUnitParameter{ Integrated IPMI 2.0 + KVM with dedicated LAN } \nodeUnitParameter{ Intel Quad-port 10GBaseT Ethernet Controller } \nodeUnitParameter{ 4 x 3.5'' Hot-swap Drive Bays For customizable Storage } \nodeUnitLastParameter{ 750W Redundant Power Supply } % Unit has a set of components parameters \nodeUnitSetItem{2}{ Intel Xeon Silver 4110 8C 2.1GHz 11MB Cache } \nodeUnitSetItem{1}{ 128GB DDR4 2666MHz ECC Reg (8 x 16GB) } \nodeUnitSetItem{4}{ HGST Ultrastar 6TB 7200RPM SATA 6Gb/s } %\nodeUnitSetItem{1}{ No Operating System. Include testing and customer% % OS preference in notes. } %\nodeUnitSetItem{1}{ Return to Depot Warranty (3 Year Hardware Warranty% % with Standard Advance Parts Replacement) } \nodeUnitSetLastItem{1}{ Intel 10G Dual Port RJ45 Ethernet Adapter } % Unit ends with notes, pass "none" parameter if no notes %\nodeUnitSetNotes { none } %%% END UNIT %%% %%% UNIT %%% % Unit name \nodeUnitName{2}{Iris NV1211}{nonbrand-dark-blue}{ao-white} % Unit configuration parameters \nodeUnitParameter{ 1U Form Factor ~~- Dual Intel Xeon SP Processor } \nodeUnitParameter{ Up to 1534GB DDR4 2400MHz ECC Registered Memory } \nodeUnitParameter{ Integrated IPMI 2.0 + KVM with dedicated LAN } \nodeUnitParameter{ Intel x540 Dual-port 10Gigabit Ethernet } \nodeUnitParameter{ 10 x 2.5'' Solid State NVMe Disks } \nodeUnitLastParameter{ 1000W Redundant High-efficiency Power Supply } % Unit has a set of components parameters \nodeUnitSetItem{2}{ Intel Xeon Silver 4114 10C 2.2GHz 13.75MB Cache } \nodeUnitSetItem{1}{ 64GB DDR4 2666MHz ECC Reg (4 x 16GB) } \nodeUnitSetItem{1}{ Samsung 960 EVO M.2 NVME SSD 500GB } \nodeUnitSetItem{6}{ Ultrastar SN200 800GB NVMe SSD } % \nodeUnitSetItem{1}{ No Operating System. Include testing and customer% % OS preference in notes. } % \nodeUnitSetItem{1}{ Return to Depot Warranty (3 Year Hardware Warranty% % with Standard Advance Parts Replacement) } \nodeUnitSetLastItem{1}{ Intel X710 Converged Network Adapter Quad-port 10GBaseT } % Unit ends with notes, pass "none" parameter if no notes %\nodeUnitSetNotes { none } %%% END UNIT %%% \end{tabu} \end{table} Notes applicable to all units: { 1. No Operating System. Include testing and customer OS preference in notes. } { 2. Return to Depot Warranty (3 Year Hardware Warranty with Standard Advance Parts Replacement) } \newpage \section{GNU/Linux Servers} The servers will all run Debian GNU/Linux \subsection{Denver Server List} \begin{itemize} \item \texttt{oc1.forksand.com} --- KVM host. \item \texttt{rd1.forksand.com} --- Misc. \end{itemize} \vspace{10mm} \texttt{\qquad oc1.forksand.com parameters} \begin{minted}{sh} Full Network: 70.39.125.64/27 Network 70.39.125.65 Gateway 70.39.125.66 AVAILABLE 70.39.125.94 AVAILABLE 70.39.125.95 Broadcast 255.255.255.224 Netmask Break the main IP into a /30 # Main network interface # 2 IPs 70.39.125.64/30 Network 70.39.125.65 Gateway 70.39.125.66 oc1 70.39.125.67 Broadcast 255.255.255.252 Netmask # vmbr0 Bridge 0 with 2 IPs 70.39.125.68/30 Network 70.39.125.69 vmbr0 gateway 70.39.125.70 AVAILABLE 70.39.125.71 Broadcast 255.255.255.252 Netmask # vmbr1 Bridge 1 with 6 IPs 70.39.125.72/29 Network 70.39.125.73 vmbr1 gateway 70.39.125.74 AVAILABLE 70.39.125.76 test99 70.39.125.78 AVAILABLE 70.39.125.79 Broadcast 255.255.255.248 Netmask # vmbr2 Bridge 2 with 14 IPs 70.39.125.80/28 Network 70.39.125.81 vmbr2 gateway 70.39.125.92 AVAILABLE 70.39.125.94 AVAILABLE 70.39.125.95 Broadcast 255.255.255.240 Netmask \end{minted} \newpage \texttt{\qquad rd1.forksand.com parameters} \begin{minted}{sh} Full Network: 174.128.229.128/27 Network 174.128.229.129 Gateway 174.128.229.130 Main rd1 IP 174.128.229.131 AVAILABLE 174.128.229.158 AVAILABLE 174.128.229.159 Broadcast 255.255.255.224 Netmask Break the main network into a /30 # Main network interface # 2 IPs 174.128.229.128/30 Network 174.128.229.129 Gateway 174.128.229.130 oc1 174.128.229.131 Broadcast 255.255.255.252 Netmask # vmbr0 Bridge 0 with 2 IPs 174.128.229.132/30 Network 174.128.229.133 vmbr0 gateway 174.128.229.134 AVAILABLE 174.128.229.135 Broadcast 255.255.255.252 Netmask # vmbr1 Bridge 1 with 6 IPs 174.128.229.136/29 Network 174.128.229.137 vmbr1 gateway 174.128.229.138 AVAILABLE 174.128.229.140 test99 174.128.229.142 AVAILABLE 174.128.229.143 Broadcast 255.255.255.248 Netmask # vmbr2 Bridge 2 with 14 IPs 174.128.229.144/28 Network 174.128.229.145 vmbr2 gateway 174.128.229.156 AVAILABLE 174.128.229.158 AVAILABLE 174.128.229.159 Broadcast 255.255.255.240 Netmask \end{minted} \section{Network Hardware} The network switches do not run free software. \section{Disk Drives} The disk drives do not run free software. \begin{itemize} \item Hard drive platters, 7200 RPM, 2.5'' and 3.5'' \item SSD \item NVMe \end{itemize} \section{Suppliers} Who we'll get hardware from. \begin{itemize} \item Pogo Linux --- Debian GNU/Linux Servers, USA. \item Viking.net --- Coreboot Opteron servers in Germany. \item raptorcs.com --- POWER9, custom Coreboot systems (?), USA. \end{itemize} \newcommand{\includescreen}[3]{ \begin{figure}[!ht] \includegraphics[keepaspectratio=true,height=1.10\textheight,width=1.00\textwidth,angle=0]{#1} \caption{#2} #3 \end{figure} } \section{Shark nodes configuration. Using an example Shark2} %\includescreen{shark2/01.png}{Log in to admin-webview}{} \includescreen{shark2/02.png}{Log in to admin-webview}{\label{fig:shark2login}} %\includescreen{shark2/03.png}{Logged in to admin-webview. Notification of no valid subscription}{} %\includescreen{shark2/04.png}{Browse Datacenter, log hidden}{\label{fig:shark2browsedatacenter}} %\includescreen{shark2/05.png}{Browse shark2 Node}{\label{fig:shark2browsenode}} \includescreen{shark2/06.png}{Browse shark2 Network}{\label{fig:shark2network}} %\includescreen{shark2/07.png}{Select first shark2 Network device}{} \includescreen{shark2/08.png}{Edit first shark2 Network device}{} \includescreen{shark2/09.png}{Cleanup first shark2 Network device}{\label{fig:shark2cleanupnetdevice1}} \includescreen{shark2/10.png}{Browse shark2 Network}{} \includescreen{shark2/11.png}{Create shark2 Linux Bridge}{\label{fig:shark2linuxbridge}} %\includescreen{shark2/12.png}{Create shark2 Linux Bridge}{} \includescreen{shark2/13.png}{Create shark2 Linux Bridge}{} \begin{table}[!htb] \caption{IP configs of nodes} \label{tab:sharkNodeIPConfig} \begin{tabular}{|l|l|l|l|} \hline \multicolumn {1}{|l|}{ Parameter}& \multicolumn {1}{l|}{ Shark2}& \multicolumn {1}{l|}{ Shark3}& \multicolumn {1}{l|}{ Shark4} \\ \hline Linux bridge & & & \\ %\hline Name & vmbr0 & vmbr0 & vmbr0 \\ %\hline IP address & 174.128.229.130 & 70.39.103.218 & 70.39.103.210 \\ %\hline Subnet mask & 255.255.255.224 & 255.255.255.248 & 255.255.255.248 \\ %\hline Gateway & 174.128.229.129 & 70.39.103.217 & 70.39.103.209 \\ %\hline Bridge ports & enp2s0 & enp3s0 & enp3s0 \\ \hline Network Device & & & \\ %\hline Name & enp3s0 & enp4s0 & enp4s0 \\ %\hline IP address & 10.2.2.2 & 10.2.2.3 & 10.2.2.4 \\ %\hline Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline Network Device & & & \\ %\hline Name & enp4s0 & enp5s0 & enp5s0 \\ %\hline IP address & 10.99.99.2 & 10.99.99.3 & 10.99.99.4 \\ %\hline Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline \end{tabular} \end{table} \includescreen{shark2/14.png}{Browse shark2 Network}{} %\includescreen{shark2/15.png}{Select second shark2 Network device}{} %\includescreen{shark2/16.png}{Edit second shark2 Network device}{} \includescreen{shark2/17.png}{Edit second on the list shark2 Network device}{} %\includescreen{shark2/18.png}{Browse shark2 Network}{} %\includescreen{shark2/19.png}{Select third shark2 Network device}{} %\includescreen{shark2/20.png}{Edit third shark2 Network device}{} \includescreen{shark2/21.png}{Edit third on the list shark2 Network device}{} \begin{table}[!htb] \caption{IP configs of nodes, duplicate of table \ref{tab:sharkNodeIPConfig}} % \label{tab:sharkLinuxBridge} \begin{tabular}{|l|l|l|l|} \hline \multicolumn {1}{|l|}{ Parameter}& \multicolumn {1}{l|}{ Shark2}& \multicolumn {1}{l|}{ Shark3}& \multicolumn {1}{l|}{ Shark4} \\ \hline Linux bridge & & & \\ %\hline Name & vmbr0 & vmbr0 & vmbr0 \\ %\hline IP address & 174.128.229.130 & 70.39.103.218 & 70.39.103.210 \\ %\hline Subnet mask & 255.255.255.224 & 255.255.255.248 & 255.255.255.248 \\ %\hline Gateway & 174.128.229.129 & 70.39.103.217 & 70.39.103.209 \\ %\hline Bridge ports & enp2s0 & enp3s0 & enp3s0 \\ \hline Network Device & & & \\ %\hline Name & enp3s0 & enp4s0 & enp4s0 \\ %\hline IP address & 10.2.2.2 & 10.2.2.3 & 10.2.2.4 \\ %\hline Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline Network Device & & & \\ %\hline Name & enp4s0 & enp5s0 & enp5s0 \\ %\hline IP address & 10.99.99.2 & 10.99.99.3 & 10.99.99.4 \\ %\hline Subnet mask & 255.255.255.0 & 255.255.255.0 & 255.255.255.0 \\ \hline \end{tabular} \end{table} \includescreen{shark2/22.png}{Browse shark2 Network}{} %\includescreen{shark2/23.png}{Browse shark2 node}{} \includescreen{shark2/24.png}{Restart shark2 node}{} %\clearpage % avoid LaTeX Error: Too many unprocessed floats. %\section{Shark3 configuration} % %\includescreen{shark3/01.png}{Log in to admin-webview}{\label{fig:shark3login}} %\includescreen{shark3/02.png}{Logged in to admin-webview. Notification of no valid subscription}{} %\includescreen{shark3/03.png}{Browse Datacenter, log hidden}{\label{fig:shark3browsedatacenter}} %\includescreen{shark3/04.png}{Browse Shark3 Node}{\label{fig:shark3browsenode}} %\includescreen{shark3/05.png}{Shark3 Network}{\label{fig:shark3network}} %\includescreen{shark3/06.png}{Browse Shark3 Network}{} %\includescreen{shark3/07.png}{Select first Shark3 Network device}{} %\includescreen{shark3/08.png}{Edit first Shark3 Network device}{} %\includescreen{shark3/09.png}{Cleanup first Shark3 Network device}{\label{fig:shark3cleanupnetdevice1}} %\includescreen{shark3/10.png}{Create Shark3 Linux Bridge}{\label{fig:shark3linuxbridge}} %\includescreen{shark3/11.png}{Create Shark3 Linux Bridge}{} %\includescreen{shark3/12.png}{Create Shark3 Linux Bridge}{} %\includescreen{shark3/13.png}{Create Shark3 Linux Bridge}{} %\includescreen{shark3/14.png}{Select second Shark3 Network device}{} %\includescreen{shark3/15.png}{Edit second Shark3 Network device}{} %\includescreen{shark3/16.png}{Edit second Shark3 Network device}{} %\includescreen{shark3/17.png}{Select third Shark3 Network device}{} %\includescreen{shark3/18.png}{Edit third Shark3 Network device}{} %\includescreen{shark3/19.png}{Edit third Shark3 Network device}{} %\includescreen{shark3/20.png}{Edit third Shark3 Network device}{} %\includescreen{shark3/21.png}{Browse Shark3 node}{} %\includescreen{shark3/22.png}{Restart Shark3 node}{} % %\clearpage % avoid LaTeX Error: Too many unprocessed floats. %\section{Shark4 configuration} % % %\includescreen{shark4/01.png}{Log in to admin-webview}{} %\includescreen{shark4/02.png}{Log in to admin-webview}{\label{fig:shark4login}} %\includescreen{shark4/03.png}{Browse Datacenter}{\label{fig:shark4browsedatacenter}} %\includescreen{shark4/04.png}{Browse Datacenter, log hidden}{} %\includescreen{shark4/05.png}{Browse Shark4 Node}{\label{fig:shark4browsenode}} %\includescreen{shark4/06.png}{Shark4 Network}{\label{fig:shark4network}} %\includescreen{shark4/07.png}{Select first Shark4 Network device}{} %\includescreen{shark4/08.png}{Edit first Shark4 Network device}{} %\includescreen{shark4/09.png}{Cleanup first Shark4 Network device}{\label{fig:shark4cleanupnetdevice1}} %\includescreen{shark4/10.png}{Create Shark4 Linux Bridge}{\label{fig:shark4linuxbridge}} %\includescreen{shark4/11.png}{Create Shark4 Linux Bridge}{} %\includescreen{shark4/12.png}{Select second Shark4 Network device}{} %\includescreen{shark4/13.png}{Select second Shark4 Network device}{} %\includescreen{shark4/14.png}{Edit second Shark4 Network device}{} %\includescreen{shark4/15.png}{Edit second Shark4 Network device}{} %\includescreen{shark4/16.png}{Select second Shark4 Network device}{} %\includescreen{shark4/17.png}{Edit second Shark4 Network device}{} %\includescreen{shark4/18.png}{Edit second Shark4 Network device}{} %\includescreen{shark4/19.png}{Restart Shark4 node}{}