<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>一心净土 Blog</title>
        <link>https://www.gavintan.cn/blog</link>
        <description>一心净土 Blog</description>
        <lastBuildDate>Wed, 25 Jun 2025 07:39:28 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-Hans</language>
        <item>
            <title><![CDATA[Ansible使用PsExec远程控制Windows]]></title>
            <link>https://www.gavintan.cn/blog/psexec</link>
            <guid>https://www.gavintan.cn/blog/psexec</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[Ansible 无需设置 WinRM 即可从 Linux 主机向 Windows 主机运行远程命令。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="概要">概要<a href="https://www.gavintan.cn/blog/psexec#%E6%A6%82%E8%A6%81" class="hash-link" aria-label="概要的直接链接" title="概要的直接链接">​</a></h2>
<ul>
<li>
<p>无需设置 WinRM 即可从 Linux 主机向 Windows 主机运行远程命令。</p>
</li>
<li>
<p>可以在 Ansible 控制器上运行，以引导 Windows 主机，使其为 WinRM 做好准备。</p>
</li>
</ul>
<p><a href="https://docs.ansible.com/ansible/latest/collections/community/windows/psexec_module.html" target="_blank" rel="noopener noreferrer">官方文档</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ansible控制端环境">ansible控制端环境<a href="https://www.gavintan.cn/blog/psexec#ansible%E6%8E%A7%E5%88%B6%E7%AB%AF%E7%8E%AF%E5%A2%83" class="hash-link" aria-label="ansible控制端环境的直接链接" title="ansible控制端环境的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum install krb5-devel krb5-workstation</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install pypsexec smbprotocol[kerberos]</span><br></span></code></pre></div></div>
<p>/etc/ansible/ansible.cfg</p>
<div class="language-cfg codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-cfg codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[defaults]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">host_key_checking=False</span><br></span></code></pre></div></div>
<p>/etc/ansible/hosts</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[win]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">192.168.32.20</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[win:vars]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ansible_user=administrator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ansible_password=123456</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">system=win7</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="被控windows">被控windows<a href="https://www.gavintan.cn/blog/psexec#%E8%A2%AB%E6%8E%A7windows" class="hash-link" aria-label="被控windows的直接链接" title="被控windows的直接链接">​</a></h2>
<p>必须放开445端口 防火墙名称-Netlogon 服务(NP-In)</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="playbook">playbook<a href="https://www.gavintan.cn/blog/psexec#playbook" class="hash-link" aria-label="playbook的直接链接" title="playbook的直接链接">​</a></h2>
<p>配置winrm</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">config_winrm.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> win</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">gather_facts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tasks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> config winrm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">stdin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        #提前设置系统密码，修改网络位置不要选择公用网络</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        #查看winrm启动状态 winrm enumerate winrm/config/listener</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        winrm quickconfig -quiet -force</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        winrm set winrm/config/service/auth '@{Basic="true"}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        winrm set winrm/config/service '@{AllowUnencrypted="true"}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        exit</span><br></span></code></pre></div></div>
<p>更新powershell（ansible后续通过winrm或openssh控制windwos必须升级）</p>
<ul>
<li><a href="https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe" target="_blank" rel="noopener noreferrer">NDP461-KB3102436-x86-x64-AllOS-ENU.exe</a></li>
<li><a href="https://download.microsoft.com/download/6/F/5/6F5FF66C-6775-42B0-86C4-47D41F2DA187/Win7AndW2K8R2-KB3191566-x64.zip" target="_blank" rel="noopener noreferrer">Win7AndW2K8R2-KB3191566-x64</a></li>
</ul>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">upgrade_powershell51_win7.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> win</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">gather_facts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">vars</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">fileurl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//192.168.8.192</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">8888</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tasks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install .NET 4.6.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">register</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_net_result</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">#win7需要设置false 不使用加密</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">stdin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $url = "{{ fileurl }}/NDP461-KB3102436-x86-x64-AllOS-ENU.exe"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $file = "$env:temp\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        if (-not (Test-Path -Path $file)) {echo "download $url failed";exit 1}</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        Start-Process -FilePath $file -ArgumentList "/q /norestart" -Wait</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        exit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install PowerShell 5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">#win7远程安装更新限制 https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/installing-updates-features-roles/windows-update-standalone-installer-returns-error</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">register</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_powershell_result</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">when</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_net_result.rc == 0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">stdin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $url = "{{ fileurl }}/Win7AndW2K8R2-KB3191566-x64.msu"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $file = "$env:temp\Win7AndW2K8R2-KB3191566-x64.msu"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $extpath = "$env:temp\Win7AndW2K8R2-KB3191566"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        if (-not (Test-Path -Path $file)) {echo "download $url failed";exit 1}</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        Start-Process -FilePath $file -ArgumentList "/extract:$extpath" -Wait</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $cabfiles = Get-ChildItem -Path "$extpath" -Filter "*.cab"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        foreach($f in $cabfiles){Start-Process -FilePath "dism.exe" -ArgumentList "/online /add-package /PackagePath:$extpath/$f /IgnoreCheck /quiet /norestart" -Wait}</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        Restart-Computer -Force</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        exit</span><br></span></code></pre></div></div>
<p>安装openssh（win10系统以上可以在系统设置功能里直接启用）</p>
<ul>
<li><a href="https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.5.0.0p1-Beta/OpenSSH-Win64.zip" target="_blank" rel="noopener noreferrer">OpenSSH-Win64</a></li>
</ul>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">install_win32-openssh.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> win</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">gather_facts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">vars</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">fileurl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//192.168.8.192</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">8888</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tasks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> download Win32</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">OpenSSH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">stdin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $url = "{{ fileurl }}/OpenSSH-Win64.zip"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $file = "$env:temp\OpenSSH-Win64.zip"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        $expath = "C:\Program Files"</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        if (-not (Test-Path -Path $file)) {echo "download $url failed";exit 1}</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        (new-object -com shell.application).NameSpace($expath).CopyHere((new-object -com shell.application).NameSpace($file).Items())</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        exit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install Win32</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">OpenSSH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">register</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_openssh_result</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">interactive</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-ExecutionPolicy Bypass -File "C:\Program Files\OpenSSH-Win64\install-sshd.ps1"'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> start Win32</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">OpenSSH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">when</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_openssh_result.rc == 0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> powershell.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">arguments</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'-'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">stdin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        net start sshd</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        Set-Service sshd -StartupType Automatic</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        exit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">debug</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">var</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> install_openssh_result</span><br></span></code></pre></div></div>
<p>打开软件（要弹出窗口必须先获取到windows登录用户的session）</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">open_soft.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> win</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">gather_facts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tasks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> open notepad</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">local_action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">module</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> community.windows.psexec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">hostname</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_user }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">connection_password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{{ ansible_password }}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">encrypt</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{ 'false' if system == 'win7' else 'true' }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">executable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> notepad.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic">#arguments: /c</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">working_directory</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> C</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">\Users\Administrator\Desktop</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">interactive</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">interactive_session</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">#在windows上执行qwinsta命令查看session 或者执行命令query session %username%</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">process_username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> system</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">asynchronous</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Ansible</category>
            <category>PsExec</category>
            <category>Windows</category>
        </item>
        <item>
            <title><![CDATA[Kubernetes安装]]></title>
            <link>https://www.gavintan.cn/blog/k8s</link>
            <guid>https://www.gavintan.cn/blog/k8s</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[Kubernetes，也被称为K8s，是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="准备系统环境">准备系统环境<a href="https://www.gavintan.cn/blog/k8s#%E5%87%86%E5%A4%87%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83" class="hash-link" aria-label="准备系统环境的直接链接" title="准备系统环境的直接链接">​</a></h2>
<p>关闭 swap</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">swapoff -a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sed -i 's/.*swap/#&amp;/' /etc/fstab</span><br></span></code></pre></div></div>
<p>修改内核参数</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/sysctl.d/k8s.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">net.bridge.bridge-nf-call-ip6tables = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">net.bridge.bridge-nf-call-iptables = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">net.ipv4.ip_nonlocal_bind = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">net.ipv4.ip_forward = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">vm.swappiness = 0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">vm.max_map_count = 262144</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">net.netfilter.nf_conntrack_max = 1000000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF | sudo tee /etc/modules-load.d/k8s.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">br_netfilter</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">echo "* soft nofile 65536" &gt;&gt; /etc/security/limits.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">echo "* hard nofile 65536" &gt;&gt; /etc/security/limits.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">modprobe br_netfilter</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sysctl -p /etc/sysctl.d/k8s.conf</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-docker">安装 docker<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-docker" class="hash-link" aria-label="安装 docker的直接链接" title="安装 docker的直接链接">​</a></h2>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">脚本安装</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">yum安装</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">yum阿里源安装</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -fsSL https://get.docker.com/ | sh -s -- --mirror Aliyun</span><br></span></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum -y install yum-utils</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum -y install docker-ce</span><br></span></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum -y install yum-utils</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum -y install docker-ce</span><br></span></code></pre></div></div></div></div></div>
<p>创建 docker 配置文件</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">/etc/docker/daemon.json</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"registry-mirrors"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"https://fl791z1h.mirror.aliyuncs.com"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"exec-opts"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"native.cgroupdriver=systemd"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"log-driver"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json-file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"log-opts"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"max-size"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"100m"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"storage-driver"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"overlay2"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-kubernetes">安装 kubernetes<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-kubernetes" class="hash-link" aria-label="安装 kubernetes的直接链接" title="安装 kubernetes的直接链接">​</a></h2>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">官方源</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">阿里源</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[kubernetes]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name=Kubernetes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enabled=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgcheck=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">repo_gpgcheck=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">exclude=kubelet kubeadm kubectl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/yum.repos.d/kubernetes.repo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[kubernetes]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name=Kubernetes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enabled=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgcheck=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">repo_gpgcheck=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div></div></div></div>
<ol>
<li>
<p>安装工具</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes</span><br></span></code></pre></div></div>
</li>
<li>
<p>初始化集群</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><p>--service-cidr service ip 范围</p><p>--pod-network-cidr pod ip 范围</p></div></div>
<blockquote>
<p>出现 tc not found in system path 错误： yum install -y iproute-tc</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 高可用集群使用参数--control-plane-endpoint=mycluster:443</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init --kubernetes-version=1.18.0 --apiserver-advertise-address=172.16.7.14 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16</span><br></span></code></pre></div></div>
</li>
<li>
<p>安装网络插件</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">calico</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">flannel</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml</span><br></span></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml</span><br></span></code></pre></div></div></div></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>calico 节点出现 mster calico-node notready 状态以及出现 Connect Socket: Connection reset by peer bird: BGP: Unexpected connect from unknown address</p><div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 为Calico节点配置IP自动检测，以确保使用正确的IP地址进行路由interface=修改为对应的实际物理网卡</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=eth.*</span><br></span></code></pre></div></div></div></div>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="集群设置">集群设置<a href="https://www.gavintan.cn/blog/k8s#%E9%9B%86%E7%BE%A4%E8%AE%BE%E7%BD%AE" class="hash-link" aria-label="集群设置的直接链接" title="集群设置的直接链接">​</a></h2>
<p>启用 ipvs 模式</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 修改ConfigMap的kube-system/kube-proxy中的config.conf，mode: "ipvs"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl edit cm kube-proxy -n kube-system</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 修改后重启kube-proxy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl rollout restart daemonset kube-proxy -n kube-system</span><br></span></code></pre></div></div>
<p>启用 vip</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>多 master 须在每个 master 节点上面执行</p></div></div>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 定义vip地址必须同在主机网络非使用的ip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export VIP=172.16.7.18</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 定义网卡接口主机当前网卡</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export INTERFACE=eth0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ctr image pull ghcr.io/kube-vip/kube-vip:v0.4.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:v0.4.0 vip /kube-vip manifest pod \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--interface $INTERFACE \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--vip $VIP \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--controlplane \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--services \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--arp \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--leaderElection | tee  /etc/kubernetes/manifests/kube-vip.yaml</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-storageclass">安装 storageclass<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-storageclass" class="hash-link" aria-label="安装 storageclass的直接链接" title="安装 storageclass的直接链接">​</a></h2>
<blockquote>
<p>需要修改 deployment.yaml 文件里的 nfs 服务地址与路径</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd nfs-subdir-external-provisioner &amp;&amp; kubectl apply -f deploy/deployment.yaml  deploy/rbac.yaml deploy/class.yaml</span><br></span></code></pre></div></div>
<p>设置 nfs 默认 sc</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-ingress">安装 ingress<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-ingress" class="hash-link" aria-label="安装 ingress的直接链接" title="安装 ingress的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.3/deploy/static/provider/baremetal/deploy.yaml</span><br></span></code></pre></div></div>
<p>设置默认 ingress 类</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl patch ingressclass nginx -p '{"metadata": {"annotations":{"ingressclass.kubernetes.io/is-default-class":"true"}}}'</span><br></span></code></pre></div></div>
<p>ingress-nginx path 被带过去 ingress 配置添加下面配置</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">annotations</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">nginx.ingress.kubernetes.io/rewrite-target</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> /</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><p>添加一个 ingress（通过 ingressClassName 可指定 ingressclass，不指定使用默认 ingressclass）</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Ingress</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> networking.k8s.io/v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ops</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">ingressClassName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> nginx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">rules</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">host</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> zabbix.172.16.7.14.nip.io</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">paths</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">path</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> /</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">pathType</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ImplementationSpecific</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">backend</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">service</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> zabbix</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">web</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">port</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">number</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8080</span><br></span></code></pre></div></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-kubernetes-dashboard">安装 kubernetes-dashboard<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-kubernetes-dashboard" class="hash-link" aria-label="安装 kubernetes-dashboard的直接链接" title="安装 kubernetes-dashboard的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml</span><br></span></code></pre></div></div>
<p>授权</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccount</span><br></span></code></pre></div></div>
<p>获取 token</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl describe secrets -n kubernetes-dashboard $(kubectl -n kubernetes-dashboard get secret|grep kubernetes-dashboard-token|awk '{print $1}')| grep token | awk 'NR==3{print $2}'</span><br></span></code></pre></div></div>
<p>集群外部访问</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 修改service配置，找到type，将ClusterIP改成NodePort 设置nodePort端口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装-kubeshpere">安装 kubeshpere<a href="https://www.gavintan.cn/blog/k8s#%E5%AE%89%E8%A3%85-kubeshpere" class="hash-link" aria-label="安装 kubeshpere的直接链接" title="安装 kubeshpere的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml</span><br></span></code></pre></div></div>
<p>检查安装日志</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="常用操作">常用操作<a href="https://www.gavintan.cn/blog/k8s#%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C" class="hash-link" aria-label="常用操作的直接链接" title="常用操作的直接链接">​</a></h2>
<p>触发滚动更新</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl rollout restart deploy myapp-deploy -n ops</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#旧版本不支持rollout的修改deployment配置文件触发滚动更新</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">revision=`kubectl -n ops get deploy opsinterface-v1 -ojson|jq -r '.metadata.annotations."deployment.kubernetes.io/revision"|tonumber+1'`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl patch deployment test01-app1 -p '{"spec":{"template": {"metadata": {"annotations": {"deployment.kubernetes.io/revision": $revision}}}}}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl patch deployment test01-app1 -p '{"spec":{"template": {"metadata": {"annotations": {"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'</span><br></span></code></pre></div></div>
<p>新节点加入集群</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 自动生成join命令</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm token create --print-join-command</span><br></span></code></pre></div></div>
<p>导出当前集群配置</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm config view &gt; k8s.yaml</span><br></span></code></pre></div></div>
<p>更新证书</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm alpha certs renew all --config=k8s.yaml</span><br></span></code></pre></div></div>
<p>修改节点 ROLES</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl label --overwrite nodes nodename kubernetes.io/role=node1</span><br></span></code></pre></div></div>
<p>kubectl 自动补全</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">echo "source &lt;(kubectl completion bash)" &gt;&gt; ~/.bashrc</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="疑难解答">疑难解答<a href="https://www.gavintan.cn/blog/k8s#%E7%96%91%E9%9A%BE%E8%A7%A3%E7%AD%94" class="hash-link" aria-label="疑难解答的直接链接" title="疑难解答的直接链接">​</a></h2>
<p>卡住 Terminating 状态的资源无法删除</p>
<blockquote>
<p>删除资源 yml 配置里的 finalizers 内容即可</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl patch ns/myns -p '{"metadata":{"finalizers":[]}}' --type=merge</span><br></span></code></pre></div></div>
<p>etcd 无法启动（节点挂掉）</p>
<blockquote>
<p>--force-new-cluster 添加该参数覆盖旧集群信息，正常启动后可去掉</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vim /etc/kubernetes/manifests/etcd.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 查看etcd集群信息</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key endpoint status --cluster -w table</span><br></span></code></pre></div></div>
<p>删除所有 Evicted Pod</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl get pods --all-namespaces -o json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) | "kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c</span><br></span></code></pre></div></div>
<p>修复/etc/kubernetes 所有文件</p>
<ol>
<li>
<p>生成集群配置文件</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase certs all --config k8s.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase kubeconfig all --config k8s.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase control-plane all --config k8s.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase etcd local --config k8s.yml</span><br></span></code></pre></div></div>
</li>
<li>
<p>更新 cluster-info 配置</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase bootstrap-token</span><br></span></code></pre></div></div>
</li>
<li>
<p>重启控制平面组件</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd' | awk  '{print $1}'|xargs docker restart</span><br></span></code></pre></div></div>
</li>
<li>
<p>修复 kubelet 配置</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">systemctl stop kubelet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">rm -rf /var/lib/kubelet/pki/ /etc/kubernetes/kubelet.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase kubeconfig kubelet --config k8s.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeadm init phase kubelet-start --config k8s.yml</span><br></span></code></pre></div></div>
</li>
</ol>]]></content:encoded>
            <category>k8s</category>
            <category>kubernetes</category>
        </item>
        <item>
            <title><![CDATA[WinServer2022安装RDWeb HTML5客户端]]></title>
            <link>https://www.gavintan.cn/blog/rdweb</link>
            <guid>https://www.gavintan.cn/blog/rdweb</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[RDWeb HTML5客户端可以直接在web里访问RemoteApp。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装remote-desktop-services">安装Remote Desktop Services<a href="https://www.gavintan.cn/blog/rdweb#%E5%AE%89%E8%A3%85remote-desktop-services" class="hash-link" aria-label="安装Remote Desktop Services的直接链接" title="安装Remote Desktop Services的直接链接">​</a></h2>
<ol>
<li>
<p>安装Active Directory域服务</p>
<p><img decoding="async" loading="lazy" src="https://raw.githubusercontent.com/GavinTan/files/master/picgo/image-20231012171310650.png" alt="image-20231012171310650" class="img_ev3q"></p>
</li>
<li>
<p>安装：添加角色和功能向导--&gt;远程桌面服务安装--&gt;快速启动--&gt;基于会话的桌面部署</p>
<p><img decoding="async" loading="lazy" src="https://raw.githubusercontent.com/GavinTan/files/master/picgo/image-20231017161014879.png" alt="image-20231017161014879" class="img_ev3q"></p>
</li>
<li>
<p>配置：服务器管理器--&gt;远程桌面服务</p>
<p>点击概述里绿色的RD 网关 + RD 授权进行配置</p>
<blockquote>
<p>RD网关自签证书名称配置自己域名和自定义其他域名都可</p>
</blockquote>
<p><img decoding="async" loading="lazy" src="https://raw.githubusercontent.com/GavinTan/files/master/picgo/image-20231020163129119.png" alt="image-20231020163129119" class="img_ev3q"></p>
<p>点击概述里的部署概述任务下拉选项--&gt;编辑部署属性--&gt;证书（使用自己证书或是直接点击创建新证书）</p>
<blockquote>
<p>管理证书里面选择现有证书如果出现 "无法在一个或多个服务器上配置该证书" 错误，需要双击pfx证书导入存储位置要选择本地计算机。</p>
<p>导出pfx证书：
openssl pkcs12 -export -out twss.pfx -inkey /etc/pki/ssl/twss.tk.key -in /etc/pki/ssl/twss.tk.crt</p>
</blockquote>
<p><img decoding="async" loading="lazy" src="https://raw.githubusercontent.com/GavinTan/files/master/picgo/image-20231020163810060.png" alt="image-20231020163810060" class="img_ev3q"></p>
</li>
<li>
<p>访问：https://server_FQDN/RDWeb/webclient/index.html</p>
</li>
</ol>
<p><code>remoteApp 别名中文会出现"String has UTF-16 code units that do not fit in 8 bits"错误导致黑屏（默认选用快速启动创建的示例的remoteApp会是中文别名）</code></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装rd-web-html5客户端">安装RD WEB HTML5客户端<a href="https://www.gavintan.cn/blog/rdweb#%E5%AE%89%E8%A3%85rd-web-html5%E5%AE%A2%E6%88%B7%E7%AB%AF" class="hash-link" aria-label="安装RD WEB HTML5客户端的直接链接" title="安装RD WEB HTML5客户端的直接链接">​</a></h2>
<p><a href="https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/clients/remote-desktop-web-client-admin" target="_blank" rel="noopener noreferrer">查看官方安装文档</a></p>
<ol>
<li>
<p>更新 PowerShellGet 模块</p>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Install-Module -Name PowerShellGet -Force</span><br></span></code></pre></div></div>
</li>
<li>
<p>使用此 cmdlet 从 PowerShell 库安装远程桌面 Web 客户端管理 PowerShell 模块</p>
<blockquote>
<p>上面更新模块后需要先重启 PowerShell，然后更新才能生效，否则模块可能无法正常工作。</p>
</blockquote>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Install-Module -Name RDWebClientManagement</span><br></span></code></pre></div></div>
</li>
<li>
<p>下载远程桌面 Web 客户端的最新版本：</p>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Install-RDWebClientPackage</span><br></span></code></pre></div></div>
</li>
<li>
<p>导入ssl证书[.cer 或 .crt 文件的路径]</p>
<blockquote>
<p>可以在certmgr.msc个人证书里导出</p>
</blockquote>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Import-RDWebClientBrokerCert [.cer file path]</span><br></span></code></pre></div></div>
</li>
<li>
<p>发布远程桌面 Web 客户端</p>
<blockquote>
<p>可能会看到一个警告，指出不支持每设备 CAL，即使是针对每用户 CAL 配置部署也是如此。 如果部署使用每用户 CAL，则可以忽略此警告。 我们显示它是为了确保你了解配置限制。</p>
</blockquote>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Publish-RDWebClientPackage -Type Production -Latest</span><br></span></code></pre></div></div>
<p>客户端访问地址https://server_FQDN/RDWeb/webclient/index.html</p>
</li>
</ol>
<p>卸载：</p>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Uninstall-RDWebClient</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Uninstall-Module -Name RDWebClientManagement</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>RD</category>
            <category>RDWeb</category>
            <category>RDWeb HTML5</category>
            <category>Windows Server 2022</category>
        </item>
        <item>
            <title><![CDATA[Hadoop安装]]></title>
            <link>https://www.gavintan.cn/blog/hadoop</link>
            <guid>https://www.gavintan.cn/blog/hadoop</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[Apache Hadoop 是一种开源框架，用于高效存储和处理从 GB 级到 PB 级的大型数据集。利用 Hadoop，您可以将多台计算机组成集群以便更快地并行分析海量数据集，而不是使用一台大型计算机来存储和处理数据。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper-集群">zookeeper 集群<a href="https://www.gavintan.cn/blog/hadoop#zookeeper-%E9%9B%86%E7%BE%A4" class="hash-link" aria-label="zookeeper 集群的直接链接" title="zookeeper 集群的直接链接">​</a></h2>
<div class="language-cfg codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">zoo.cfg</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-cfg codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># The number of milliseconds of each tick</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tickTime=2000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># The number of ticks that the initial </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># synchronization phase can take</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">initLimit=10</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># The number of ticks that can pass between </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># sending a request and getting an acknowledgement</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">syncLimit=5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># the directory where the snapshot is stored.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># do not use /tmp for storage, /tmp here is just </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># example sakes.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dataDir=/data/zookeeper</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># the port at which the clients will connect</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">clientPort=2181</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># the maximum number of client connections.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># increase this if you need to handle more clients</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#maxClientCnxns=60</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Be sure to read the maintenance section of the </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># administrator guide before turning on autopurge.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># The number of snapshots to retain in dataDir</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#autopurge.snapRetainCount=3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Purge task interval in hours</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Set to "0" to disable auto purge feature</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#autopurge.purgeInterval=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">## Metrics Providers</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># https://prometheus.io Metrics Exporter</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#metricsProvider.httpPort=7000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#metricsProvider.exportJvmInfo=true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#当前节点配置0.0.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">server.1=0.0.0.0:2888:3888</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">server.2=172.16.7.15:2888:3888</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">server.3=172.16.7.16:2888:3888</span><br></span></code></pre></div></div>
<p>创建myid与server.后面的标识对应</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">echo 1 &gt; /data/zookeeper/myid</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="hadoop-ha集群">hadoop ha集群<a href="https://www.gavintan.cn/blog/hadoop#hadoop-ha%E9%9B%86%E7%BE%A4" class="hash-link" aria-label="hadoop ha集群的直接链接" title="hadoop ha集群的直接链接">​</a></h2>
<p>配置文件</p>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">peicore-site.xml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">fs.defaultFS</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">hdfs://mycluster</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">namenode地址，配置ha后应配置成ha nameservice名称</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">hadoop.tmp.dir</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">/data/hadoop</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">hadoop文件存放路径的根目录，nn dn默认会存储在该位置</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">io.file.buffer.size</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">131072</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">在序列中使用的缓冲区大小，以byte为单位，默认值是4KB</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">hadoop.http.staticuser.user</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">bigdata</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">在网页界面访问hdfs使用的用户名，配置与启动hadoop同样用户才有权限访问hdfs</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">ha.zookeeper.quorum</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.14:2181,172.16.7.15:2181,172.16.7.16:2181</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">配置zookeeper集群地址</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">hdfs-site.xml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.replication</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">3</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">副本数，HDFS存储时的备份数量</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.nameservices</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">mycluster</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">配置ha nameservice名称</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.ha.namenodes.mycluster</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">nn1,nn2</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">设置NameNode ID列表进行</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.namenode.rpc-address.mycluster.nn1</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.14:8020</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">设置nn1的NameNode进程的地址和IPC端口</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.namenode.rpc-address.mycluster.nn2</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.15:8020</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">设置nn2的NameNode进程的地址和IPC端口</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.namenode.http-address.mycluster.nn1</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.14:9870</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">设置nn1的NameNode的web ui地址</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.namenode.http-address.mycluster.nn2</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.15:9870</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">设置nn2的NameNode的web ui地址</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.namenode.shared.edits.dir</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">qjournal://172.16.7.14:8485;172.16.7.15:8485/mycluster</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">指定NameNode的元数据在JournalNode上的存放位置</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.journalnode.edits.dir</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">/data/hadoop/journaldata</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">指定JournalNode在本地磁盘存放数据的位置</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.ha.automatic-failover.enabled</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">true</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">开启NameNode自动故障转移</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.client.failover.proxy.provider.mycluster</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">配置故障转移代理类</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.ha.fencing.methods</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">sshfence</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">隔离方法故障转移期间用来隔离Active NameNode，sshfence-SSH到Active NameNode使用fuser终止进程防止存在多个Active NameNode</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.ha.fencing.ssh.private-key-files</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">/home/bigdata/.ssh/id_rsa</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">使用sshfence隔离机制时必须ssh免密登陆，配置SSH私钥文件</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">dfs.ha.fencing.ssh.connect-timeout</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">30000</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">sshfence隔离方法超时时间，以毫秒为单位</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">mapred-site.xml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">mapreduce.framework.name</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">		</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">用于执行MapReduce作业的运行时框架默认local</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">mapreduce.admin.user.env</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">HADOOP_MAPRED_HOME=$HADOOP_HOME</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">可以设置AM【AppMaster】端的环境变量，如果上面缺少配置，可能会造成mapreduce失败</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.app.mapreduce.am.env</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">HADOOP_MAPRED_HOME=$HADOOP_HOME</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">可以设置AM【AppMaster】端的环境变量，如果上面缺少配置，可能会造成mapreduce失败</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">yarn-site.xml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Site specific YARN configuration properties --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.nodemanager.aux-services</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">mapreduce_shuffle</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">自定义服务配置MapReduce运行须配置成mapreduce_shuffle</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.resourcemanager.hostname</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">master</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">ResourceManager的主机名</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.resourcemanager.webapp.address</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">172.16.7.14:8088</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn web ui地址</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.log-aggregation-enable</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">true</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">启用日志聚合功能，日志聚合开启后保存到HDFS上</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.log-aggregation.retain-seconds</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">86400</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">聚合后的日志在HDFS上保存时间</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.log.server.url</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">http://172.16.7.14:19888/jobhistory/logs</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">日志聚合服务器的URL</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">yarn.nodemanager.remote-app-log-dir</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">name</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">/tmp/logs</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">value</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">日志在HDFS上存储路径</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">description</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">property</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>配置工人节点DataNode和NodeManager</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vim /etc/hadoop/workers</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">172.16.7.15</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">172.16.7.16</span><br></span></code></pre></div></div>
<p>启动</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#启动zookeeper集群，在所有zookeeper节点上执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/zkServer.sh start</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#启动jurnalnode进程，在配置的所有namenode节点执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs --daemon start journalnode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#格式化namenode，在配置的namenode其中任意一台上执行，仅需要第一次启动集群执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs namenode -format</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs --daemon start namenode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#同步namenode元数据，在未执行格式化的其他namenode节点上执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs namenode -bootstrapStandby</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#启动MR历史记录</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/mapred --daemon start historyserver</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#在ZooKeeper中初始化HA状态，在配置的namenode其中任意一台上执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs zkfc -formatZK</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#启动zkfc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs --daemon start zkfc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#启动所有服务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./sbin/start-all.sh</span><br></span></code></pre></div></div>
<p>常用操作</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#查看集群状态</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hadoop dfsadmin -report</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#停掉namenode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hdfs --daemon stop namenode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#执行wordcount例子</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ambari部署管理监控hadoop">ambari部署（管理监控hadoop）<a href="https://www.gavintan.cn/blog/hadoop#ambari%E9%83%A8%E7%BD%B2%E7%AE%A1%E7%90%86%E7%9B%91%E6%8E%A7hadoop" class="hash-link" aria-label="ambari部署（管理监控hadoop）的直接链接" title="ambari部署（管理监控hadoop）的直接链接">​</a></h2>
<p>编译</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum install maven rpm-build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wget https://www-eu.apache.org/dist/ambari/ambari-2.7.5/apache-ambari-2.7.5-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tar xfvz apache-ambari-2.7.5-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd apache-ambari-2.7.5-src</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn versions:set -DnewVersion=2.7.5.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pushd ambari-metrics</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn versions:set -DnewVersion=2.7.5.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">popd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#RHEL (CentOS 7) &amp; SUSE (SLES 12 SP2 &amp; SP3)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn -B clean install rpm:rpm -DnewVersion=2.7.5.0.0 -DbuildNumber=5895e4ed6b30a2da8a90fee2403b6cab91d19972 -DskipTests -Dpython.ver="python &gt;= 2.6" -Drat.skip=true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#Ubuntu/Debian</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn -B clean install jdeb:jdeb -DnewVersion=2.7.5.0.0 -DbuildNumber=5895e4ed6b30a2da8a90fee2403b6cab91d19972 -DskipTests -Dpython.ver="python &gt;= 2.6" -Drat.skip=true</span><br></span></code></pre></div></div>
<p>安装</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#RHEL (CentOS 7) &amp; SUSE (SLES 12 SP2 &amp; SP3)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum install ambari-server/target/rpm/ambari-server/RPMS/noarch/ambari-server*.rpm </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum install ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent*.rpm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#Ubuntu/Debian</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">apt-get install ambari-server/target/rpm/ambari-server/RPMS/noarch/ambari-server*.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">apt-get install ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent*.deb</span><br></span></code></pre></div></div>
<p>启动运行</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ambari-server setup</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ambari-server start</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ambari-agent start</span><br></span></code></pre></div></div>
<p>访问</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">http://&lt;ambari-server-host&gt;:8080   admin/admin</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>bower error Unexpected token
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1<!-- -->:exec<!-- --> (Bower install) on project ambari-admin: Command execution failed. Process exited with an error: 1 (Exit value: 1) -&gt; [Help 1]</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vi ambari-admin/pom.xml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;argument&gt;${basedir}/src/main/resources/ui/admin-web/node_modules/bower/bin/bower&lt;/argument&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">改为</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;argument&gt;bower&lt;/argument&gt;</span><br></span></code></pre></div></div></div></div>]]></content:encoded>
            <category>bigdata</category>
            <category>hadoop</category>
            <category>Apache Hadoop</category>
        </item>
        <item>
            <title><![CDATA[Snort3安装]]></title>
            <link>https://www.gavintan.cn/blog/snort3</link>
            <guid>https://www.gavintan.cn/blog/snort3</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[Snort3 下一代Snort IPS（入侵防御系统），Snort IPS 使用一系列规则来帮助定义恶意网络活动，并使用这些规则来查找与其匹配的数据包并为用户生成警报。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="准备环境">准备环境<a href="https://www.gavintan.cn/blog/snort3#%E5%87%86%E5%A4%87%E7%8E%AF%E5%A2%83" class="hash-link" aria-label="准备环境的直接链接" title="准备环境的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">apt install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool libjemalloc-dev libpcre3-dev</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="编译安装">编译安装<a href="https://www.gavintan.cn/blog/snort3#%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85" class="hash-link" aria-label="编译安装的直接链接" title="编译安装的直接链接">​</a></h2>
<p>安装libdaq</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/snort3/libdaq.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd libdaq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bootstrap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./configure</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">make -j 4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">make install</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ldconfig</span><br></span></code></pre></div></div>
<p>安装snort3</p>
<div class="language-apt codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-apt codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/snort3/snort3.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd snort3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./configure_cmake.sh --prefix=/usr/local/snort3 --enable-tcmalloc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">make -j 4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">make install</span><br></span></code></pre></div></div>
<p>centos install:  <a href="https://raw.githubusercontent.com/GavinTan/files/master/picgo/Snort_3_GA_on_OracleLinux_8.pdf" target="_blank" rel="noopener noreferrer">Snort_3_GA_on_OracleLinux_8.pdf</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="配置">配置<a href="https://www.gavintan.cn/blog/snort3#%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="配置的直接链接" title="配置的直接链接">​</a></h2>
<p>设置alert_json启用日志文件</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt; EOF &gt; /usr/local/snort3/etc/snort/snort.lua</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">alert_json =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    file = true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    limit = 200</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
<p>添加警报规则</p>
<div class="language-title=&quot;/data/rules/local.rules&quot; codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-title=&quot;/data/rules/local.rules&quot; codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">alert icmp any any -&gt; $HOME_NET any (msg:"[警告]检测到 ICMP connection 请及时处理"; sid:1000001; rev:1;)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="运行">运行<a href="https://www.gavintan.cn/blog/snort3#%E8%BF%90%E8%A1%8C" class="hash-link" aria-label="运行的直接链接" title="运行的直接链接">​</a></h2>
<p>下载community-rules</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz</span><br></span></code></pre></div></div>
<p>运行snort（IDS）</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">snort -c /usr/local/snort3/etc/snort/snort.lua -R /data/rules/snort3-community.rules -i ens192 -s 65535 -k none -A alert_fast -n 100000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 保存日志</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">snort -c /usr/local/snort3/etc/snort/snort.lua -R /data/rules/snort3-community.rules -i ens192 -s 65535 -k none -A alert_fast -l /data/logs</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="常用操作">常用操作<a href="https://www.gavintan.cn/blog/snort3#%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C" class="hash-link" aria-label="常用操作的直接链接" title="常用操作的直接链接">​</a></h2>
<p>查看alert模块</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">snort --help-modules | grep alert</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="运行docker配置">运行docker配置<a href="https://www.gavintan.cn/blog/snort3#%E8%BF%90%E8%A1%8Cdocker%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="运行docker配置的直接链接" title="运行docker配置的直接链接">​</a></h2>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">Dockerfile</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">from debian:stable-20231120</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run apt update</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run apt install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool libjemalloc-dev libpcre3-dev</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run cd &amp;&amp; git clone https://github.com/snort3/libdaq.git &amp;&amp; cd libdaq &amp;&amp; ./bootstrap &amp;&amp; ./configure &amp;&amp; make -j 4 &amp;&amp; make install</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run cd &amp;&amp; git clone https://github.com/snort3/snort3.git &amp;&amp; cd snort3 &amp;&amp; ldconfig &amp;&amp; ./configure_cmake.sh --prefix=/usr/local/snort3 &amp;&amp; cd build &amp;&amp; make -j 4 &amp;&amp; make install</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run echo 'PATH=$PATH:/usr/local/snort3/bin' &gt;&gt; ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run &lt;&lt;EOF cat &gt;&gt; /usr/local/snort3/etc/snort/snort.lua</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">alert_fast =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    file = true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    limit = 200</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">docker-compose.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">services</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">snort</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">command</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> /usr/local/snort3/bin/snort </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">c /usr/local/snort3/etc/snort/snort.lua </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">R /data/rules/snort3</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">community.rules </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">i ens192 </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">s 65535 </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">k none </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">A alert_fast </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">l /data/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">network_mode</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> host</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> /etc/localtime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/etc/localtime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">ro</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>snort</category>
            <category>snort3</category>
            <category>ips</category>
        </item>
        <item>
            <title><![CDATA[ProxySQL安装]]></title>
            <link>https://www.gavintan.cn/blog/proxysql</link>
            <guid>https://www.gavintan.cn/blog/proxysql</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[ProxySQL 是一个开源的高性能、高可用性、数据库协议感知的 MySQL 代理。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装">安装<a href="https://www.gavintan.cn/blog/proxysql#%E5%AE%89%E8%A3%85" class="hash-link" aria-label="安装的直接链接" title="安装的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF | tee /etc/yum.repos.d/proxysql.repo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[proxysql_repo]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name= ProxySQL YUM repository</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.1.x/centos/\$releasever</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgcheck=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yum install proxysql -y</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="添加mysql集群节点">添加mysql集群节点<a href="https://www.gavintan.cn/blog/proxysql#%E6%B7%BB%E5%8A%A0mysql%E9%9B%86%E7%BE%A4%E8%8A%82%E7%82%B9" class="hash-link" aria-label="添加mysql集群节点的直接链接" title="添加mysql集群节点的直接链接">​</a></h2>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>同一个节点可以存在多个hostgroup里</p></div></div>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mysql </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">u admin </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">padmin </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">h </span><span class="token number" style="color:#36acaa">127.0</span><span class="token number" style="color:#36acaa">.0</span><span class="token number" style="color:#36acaa">.1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">P </span><span class="token number" style="color:#36acaa">6032</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_servers</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hostgroup_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hostname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> port</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> use_ssl</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'192.168.70.71'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">3306</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_servers</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hostgroup_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hostname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> port</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> use_ssl</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'192.168.70.72'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">3306</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_servers</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hostgroup_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hostname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> port</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> use_ssl</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'192.168.70.73'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">3306</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 保存配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL SERVERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL SERVERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>查看</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> mysql_servers</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="添加客户端登录用户">添加客户端登录用户<a href="https://www.gavintan.cn/blog/proxysql#%E6%B7%BB%E5%8A%A0%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%99%BB%E5%BD%95%E7%94%A8%E6%88%B7" class="hash-link" aria-label="添加客户端登录用户的直接链接" title="添加客户端登录用户的直接链接">​</a></h2>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>注意</div><div class="admonitionContent_BuS1"><p>用户必须在mysql节点中存在账号密码一样，目前proxysql只支持mysql_native_password密码插件，在mysql节点添加用户时候必须指定插件为mysql_native_password。</p></div></div>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># mysql节点中执行</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">USER</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'root'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token plain"> IDENTIFIED </span><span class="token keyword" style="color:#00009f">WITH</span><span class="token plain"> mysql_native_password </span><span class="token keyword" style="color:#00009f">by</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'123456'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GRANT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ALL</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">PRIVILEGES</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ON</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">.</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'root'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WITH</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">GRANT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">OPTION</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>通过定义default_hostgroup我们指定用户应该默认连接到指定相同hostgroup_id后端服务器</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># proxysql中执行</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_users </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">password</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">default_hostgroup</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'root'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">MYSQL_NATIVE_PASSWORD</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'123456'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL USERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL USERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>查看</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> mysql_users</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="连接">连接<a href="https://www.gavintan.cn/blog/proxysql#%E8%BF%9E%E6%8E%A5" class="hash-link" aria-label="连接的直接链接" title="连接的直接链接">​</a></h2>
<p>admin管理接口，默认端口为6032。该端口用于查看、配置ProxySQL。</p>
<p>接收SQL语句的接口，默认端口为6033，该端口用于mysql客户端连接。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="其他配置">其他配置<a href="https://www.gavintan.cn/blog/proxysql#%E5%85%B6%E4%BB%96%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="其他配置的直接链接" title="其他配置的直接链接">​</a></h2>
<ol>
<li>
<p><strong>配置监控用户</strong></p>
<blockquote>
<p>在mysql节点中执行创建监控用户</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">USER</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'proxysql'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token plain"> IDENTIFIED </span><span class="token keyword" style="color:#00009f">WITH</span><span class="token plain"> mysql_native_password </span><span class="token keyword" style="color:#00009f">by</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'123456'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GRANT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">USAGE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ON</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">.</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'proxysql'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>在proxysql中执行设置监控用户账号密码</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">UPDATE</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> variable_value</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'proxysql'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'mysql-monitor_username'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">UPDATE</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> variable_value</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'123456'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'mysql-monitor_password'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>查看监控信息</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> monitor</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mysql_server_connect_log </span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> time_start_us </span><span class="token keyword" style="color:#00009f">DESC</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">6</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> monitor</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mysql_server_ping_log </span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> time_start_us </span><span class="token keyword" style="color:#00009f">DESC</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">6</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li>
<p><strong>配置read_only监控和读/写组</strong></p>
<blockquote>
<p>mysql节点有read_only=0的hostgroup将自动设置为0，read_only=1设置成1</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_replication_hostgroups </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">writer_hostgroup</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">reader_hostgroup</span><span class="token punctuation" style="color:#393A34">,</span><span class="token keyword" style="color:#00009f">comment</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'cluster1'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL SERVERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL SERVERS </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>设置执行只读检查的频率，以毫秒为单位。</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">UPDATE</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> variable_value</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">5000</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'mysql-monitor_read_only_interval'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>设置只读检查超时时间（以毫秒为单位）</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">UPDATE</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> variable_value</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">5000</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'mysql-monitor_read_only_timeout'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 查看</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> monitor</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mysql_server_read_only_log </span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> time_start_us </span><span class="token keyword" style="color:#00009f">DESC</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li>
<p><strong>启用前端的 SSL/TLS（zabbix连接之类）</strong></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> mysql</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">have_ssl</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"true"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 查看</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name </span><span class="token operator" style="color:#393A34">LIKE</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'mysql%ssl%'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li>
<p><strong>设置返回给客户端的 MySQL 版本号（zabbix-server限定客户端版本之类）</strong></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">set</span><span class="token plain"> mysql</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">server_version</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"8.0.27"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL VARIABLES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 查看</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> global_variables </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> variable_name </span><span class="token operator" style="color:#393A34">LIKE</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'%version%'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li>
<p><strong>配置查询规则</strong></p>
<ul>
<li>查询规则按rule_id从小到大顺序处理</li>
<li>仅处理已active=1处理的规则</li>
<li>第一个规则示例使用插入符号 ( ^) 和美元 ( $) ：这些是特殊的正则表达式字符，用于标记模式的开始和结束，即在这种情况下match_digest或match_pattern应该完全匹配查询</li>
<li>不使用插入符号或美元：匹配可以在查询中的任何位置</li>
<li>问号被转义，因为它在正则表达式中具有特殊含义</li>
<li>apply=1表示如果当前规则匹配则不会继续匹配后的规则</li>
<li>match_digest：将正则表达式与去除 SQL 查询数据的查询摘要进行匹配（例如 <code>SELECT c FROM sbtest1 WHERE id=?</code>，如stats_mysql_query_digest.query_digest）</li>
<li>match_pattern：将正则表达式与查询的实际文本匹配（例如，<code>SELECT c FROM sbtest1 WHERE id=2</code>）</li>
<li>当入口值flagIN设置为0时，表示开始进入链式规则。</li>
<li>如未显式指定规则的flagIN值，则默认都为0。当语句匹配完当前规则后，将记下当前规则的flagOUT值，如果flagOUT值非空(NOT NULL)，则为该语句打上flagOUT标记。如果该规则的apply字段值不是1，则继续向下匹配。如果语句的flagOUT标记和下一条规则的flagIN值不同，则跳过该规则，继续向下匹配。直到匹配到flagOUT=flagIN的规则，则匹配该规则。该规则是链式规则中的另一条规则。直到某规则的apply字段设置为1，或者已经匹配完所有规则，则最后一次被评估的规则将直接生效，不再继续向下匹配。</li>
</ul>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>如果想对match_digest取反，即不被正则匹配的SQL语句才命中规则，则设置mysql_query_rules表中的字段negate_match_pattern=1。同样适用于下面的match_pattern匹配方式。</p><p>摘要总是比查询本身小，对较小的字符串运行正则表达式会更快，建议（出于性能考虑）使用match_digest. 要重写查询或匹配查询文本本身，请使用match_pattern.</p></div></div>
<blockquote>
<p>查看语句匹配</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">match_digest</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">destination_hostgroup</span><span class="token punctuation" style="color:#393A34">,</span><span class="token keyword" style="color:#00009f">apply</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'stnduser'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'^SELECT * FROM sbtest1 WHERE id=\?$'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">match_digest</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">destination_hostgroup</span><span class="token punctuation" style="color:#393A34">,</span><span class="token keyword" style="color:#00009f">apply</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'stnduser'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'^SELECT'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>数据库名称匹配（不利用 use databases 并且不命中其他规则，默认转发到用户 default_hostgroup）</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">instert </span><span class="token keyword" style="color:#00009f">into</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> schemaname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> destination_hostgroup</span><span class="token punctuation" style="color:#393A34">,</span><span class="token keyword" style="color:#00009f">apply</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'aa'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>客户端IP匹配</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">insert</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">into</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> client_addr</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> destination_hostgroup</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'192.168.8.192'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>禁止查询，可以配合客户端ip策略设置白名单</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">insert</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">into</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> match_digest</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> error_msg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'.'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'error 9999'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>查询重写</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">INTO</span><span class="token plain"> mysql_query_rules </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">active</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">match_pattern</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">replace_pattern</span><span class="token punctuation" style="color:#393A34">,</span><span class="token keyword" style="color:#00009f">apply</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">30</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'root'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'DISTINCT(.*)ORDER BY c'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'DISTINCT\1'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>查询缓存 cache_ttl(毫秒)</p>
</blockquote>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">UPDATE</span><span class="token plain"> mysql_query_rules </span><span class="token keyword" style="color:#00009f">set</span><span class="token plain"> cache_ttl</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">5000</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> rule_id</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>保存规则配置</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">LOAD</span><span class="token plain"> MYSQL QUERY RULES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> RUNTIME</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SAVE</span><span class="token plain"> MYSQL QUERY RULES </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DISK</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 查看</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> match_digest</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">destination_hostgroup </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> mysql_query_rules</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> rule_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> match_digest</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> match_pattern</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> replace_pattern</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> cache_ttl</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">apply</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> mysql_query_rules </span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> rule_id</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 查看hg(主机组)=-1为缓存查询</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> hostgroup hg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> sum_time</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> count_star</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> digest_text </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> stats_mysql_query_digest </span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> sum_time </span><span class="token keyword" style="color:#00009f">DESC</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">limit</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="全局变量">全局变量<a href="https://www.gavintan.cn/blog/proxysql#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F" class="hash-link" aria-label="全局变量的直接链接" title="全局变量的直接链接">​</a></h2>
<table><thead><tr><th>变量</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>admin-admin_credentials</td><td>admin<!-- -->:admin</td><td>管理端口用户名和密码</td></tr><tr><td>admin-mysql_ifaces</td><td>0.0.0.0:6032</td><td>管理端口</td></tr><tr><td>admin-stats_credentials</td><td>stats<!-- -->:stats</td><td>数据端口用户名和密码</td></tr><tr><td>mysql-commands_stats</td><td>true</td><td>是否开启 SQL 统计，开启后会分析每条 SQL 语句</td></tr><tr><td>mysql-connection_max_age_ms</td><td>0</td><td>到 Backend 的连接空闲多久后会自动关闭</td></tr><tr><td>mysql-default_query_timeout</td><td>86400000</td><td>到 Backend 的查询超时时间（毫秒），超过后会主动停止查询，并从 Backend Kill 掉该连接</td></tr><tr><td>mysql-free_connections_pct</td><td>10</td><td>允许的 Backend 空闲连接数，是一个占 mysql-max_connections 数量的百分比</td></tr><tr><td>mysql-interfaces</td><td>0.0.0.0:6033</td><td>数据端口配置</td></tr><tr><td>mysql-max_connections</td><td>2048</td><td>ProxySQL 可接收的最大连接数。默认 10000。</td></tr><tr><td>mysql-server_version</td><td>5.5.30</td><td>ProxySQL 返回给客户端的 MySQL 版本号，有可能影响客户端行为</td></tr><tr><td>mysql-session_idle_show_processlist</td><td>true</td><td>管理端口进行 show processlist 时，是否显示空闲连接，开启后会影响性能</td></tr><tr><td>mysql-wait_timeout</td><td>28800000</td><td>客户端连接空闲超时时间（毫秒）</td></tr></tbody></table>
<p>修改</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">set</span><span class="token plain"> admin</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">admin_credentials</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'admin:admin;myuser:myuser'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 使修改立即生效</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">load</span><span class="token plain"> admin variables </span><span class="token keyword" style="color:#00009f">to</span><span class="token plain"> runtime</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 使修改永久保存到磁盘</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">save</span><span class="token plain"> admin variables </span><span class="token keyword" style="color:#00009f">to</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">disk</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>查看</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> global_variables</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> @</span><span class="token variable" style="color:#36acaa">@admin</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">stats_credentials</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SHOW</span><span class="token plain"> VARIABLES </span><span class="token operator" style="color:#393A34">LIKE</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mysql-max_connections"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>proxysql</category>
        </item>
        <item>
            <title><![CDATA[Percona-XtraDB-Cluster安装]]></title>
            <link>https://www.gavintan.cn/blog/pxc</link>
            <guid>https://www.gavintan.cn/blog/pxc</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[Percona XtraDB Cluster是 MySQL 的数据库集群解决方案。它确保高可用性，防止停机和数据丢失，并为不断增长的环境提供线性可扩展性。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pxc集群特点">pxc集群特点<a href="https://www.gavintan.cn/blog/pxc#pxc%E9%9B%86%E7%BE%A4%E7%89%B9%E7%82%B9" class="hash-link" aria-label="pxc集群特点的直接链接" title="pxc集群特点的直接链接">​</a></h2>
<table><thead><tr><th>特点</th><th>说明</th></tr></thead><tbody><tr><td>同步复制</td><td>数据同时写入所有节点，或者即使在单个节点上也发生故障时根本不写入</td></tr><tr><td>多源复制</td><td>任何节点都可以触发数据更新。</td></tr><tr><td>真正的并行复制</td><td>副本上的多个线程在行级别执行复制</td></tr><tr><td>自动节点调配</td><td>只需添加一个节点，它就会自动同步。</td></tr><tr><td>数据一致性</td><td>不再有不同步的节点。</td></tr><tr><td>PXC 严格模式</td><td>避免使用技术预览功能和不受支持的功能</td></tr><tr><td>ProxySQL 的配置脚本</td><td>Percona XtraDB Cluster包含proxysql-admin工具，该工具能够自动配置使用ProxySQL的Percona XtraDB Cluster节点。</td></tr><tr><td>SSL加密的自动配置</td><td>Percona XtraDB Cluster包含pxc-encrypt-cluster-traffic变量，该变量启用SSL加密的自动配置</td></tr><tr><td>优化性能</td><td>Percona XtraDB Cluster的性能被优化，以适应不断增长的生产负载</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="准备环境">准备环境<a href="https://www.gavintan.cn/blog/pxc#%E5%87%86%E5%A4%87%E7%8E%AF%E5%A2%83" class="hash-link" aria-label="准备环境的直接链接" title="准备环境的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum install -y openssl socat  \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">procps-ng chkconfig procps-ng coreutils shadow-utils \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">grep libaio libev libcurl perl-DBD-MySQL perl-Digest-MD5 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">libgcc libstdc++ libgcrypt libgpg-error zlib glibc openssl-libs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">useradd -M -s /sbin/nologin mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mkdir -p /data/mysql /var/run/mysqld  /var/log/mysqld</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">chown -R mysql. /data/mysql /var/run/mysqld  /var/log/mysqld</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装">安装<a href="https://www.gavintan.cn/blog/pxc#%E5%AE%89%E8%A3%85" class="hash-link" aria-label="安装的直接链接" title="安装的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-80/Percona-XtraDB-Cluster-8.0.27/binary/tarball/Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tar zxf Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mkdir -p /usr/local/percona</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mv Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal /usr/local/percona/mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cp /usr/local/percona/mysql/support-files/mysql.server /etc/init.d/mysqld</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sed -i 's/^basedir=.*/basedir=\/usr\/local\/percona\/mysql/' /etc/init.d/mysqld</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sed -i 's/^datadir=.*/datadir=\/data\/mysql/' /etc/init.d/mysqld</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/profile.d/mysql.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export PATH=$PATH:/usr/local/percona/mysql/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source /etc/proflie</span><br></span></code></pre></div></div>
<p>生成配置文件</p>
<blockquote>
<p>不同节点需要修改<code>server-id</code>、<code>wsrep_node_name</code>、<code>wsrep_node_address</code></p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/my.cnf.d/pxc.cnf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[client]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">socket=/var/run/mysqld/mysql.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[mysqld]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">basedir=/usr/local/percona/mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">datadir=/data/mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">socket=/var/run/mysqld/mysql.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pid-file=/var/run/mysqld/mysqld.pid</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">log-error=/var/log/mysqld/mysqld.log</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">server-id=14</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">user=mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">log-bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">binlog_format=ROW</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">binlog_expire_logs_seconds=604800</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">innodb_autoinc_lock_mode=2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">default_storage_engine=InnoDB</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">log_timestamps=SYSTEM</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">######## wsrep ###############</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_cluster_name=pxc-cluster-tt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_cluster_address=gcomm://172.16.7.14,172.16.7.15,172.16.7.16</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_node_name=pxc-node-14</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_node_address=172.16.7.14</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_applier_threads=8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_log_conflicts</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pxc_strict_mode=ENFORCING</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_sst_method=xtrabackup-v2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_provider=/usr/local/percona/mysql/lib/libgalera_smm.so</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[sst]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">encrypt=4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ssl-key=server-key.pem</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ssl-ca=ca.pem</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ssl-cert=server-cert.pem</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="初始化数据库">初始化数据库<a href="https://www.gavintan.cn/blog/pxc#%E5%88%9D%E5%A7%8B%E5%8C%96%E6%95%B0%E6%8D%AE%E5%BA%93" class="hash-link" aria-label="初始化数据库的直接链接" title="初始化数据库的直接链接">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">mysqld --initialize</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="启动数据库">启动数据库<a href="https://www.gavintan.cn/blog/pxc#%E5%90%AF%E5%8A%A8%E6%95%B0%E6%8D%AE%E5%BA%93" class="hash-link" aria-label="启动数据库的直接链接" title="启动数据库的直接链接">​</a></h2>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>从 8.0.31 版本开始，SST 复制在 root 用户下停止工作。myqld不能在root下启动！</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">su mysql -s /bin/bash -c '/etc/init.d/mysqld start'</span><br></span></code></pre></div></div></div></div>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#第一个启动节点必须使用bootstrap-pxc方式，须注释functions不使用systemd不然bootstrap-pxc参数无效</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sed -i 's/^. \/etc\/rc.d\/init.d\/functions/#&amp;/' /etc/init.d/mysqld</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/etc/init.d/mysqld bootstrap-pxc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#其他节点启动</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#同步证书，其他节点必须使用第一个启动节点的证书</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">rsync -aP 172.16.7.14:/data/mysql/*.pem /data/mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/etc/init.d/mysqld start</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Percona XtraDB Cluster</category>
            <category>pxc</category>
            <category>Percona</category>
        </item>
        <item>
            <title><![CDATA[Wireguard安装]]></title>
            <link>https://www.gavintan.cn/blog/wireguard</link>
            <guid>https://www.gavintan.cn/blog/wireguard</guid>
            <pubDate>Wed, 25 Jun 2025 07:39:28 GMT</pubDate>
            <description><![CDATA[WireGuard是一种极其简单但快速且现代的 VPN，采用最先进的加密技术。它的目标是比 IPsec更快、更简单、更精简、更有用，同时避免令人头疼的问题。它的性能远高于 OpenVPN。]]></description>
            <content:encoded><![CDATA[<p>WireGuard是一种极其简单但快速且现代的 VPN，采用最先进的加密技术。它的目标是比 IPsec更快、更简单、更精简、更有用，同时避免令人头疼的问题。它的性能远高于 OpenVPN。WireGuard 被设计为通用 VPN，可在嵌入式接口和超级计算机上运行，适合许多不同的情况。它最初针对 Linux 内核发布，现在已跨平台（Windows、macOS、BSD、iOS、Android）且可广泛部署。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="服务器安装">服务器安装<a href="https://www.gavintan.cn/blog/wireguard#%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85" class="hash-link" aria-label="服务器安装的直接链接" title="服务器安装的直接链接">​</a></h2>
<p><a href="https://www.wireguard.com/install" target="_blank" rel="noopener noreferrer">前往官方安装文档</a></p>
<blockquote>
<p>Linux内核必须&gt;5.6</p>
</blockquote>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">yum install wireguard-tools</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="quick-start">Quick Start<a href="https://www.gavintan.cn/blog/wireguard#quick-start" class="hash-link" aria-label="Quick Start的直接链接" title="Quick Start的直接链接">​</a></h2>
<p><a href="https://wiki.archlinux.org/title/WireGuard" target="_blank" rel="noopener noreferrer">前往配置文档</a></p>
<ol>
<li>
<p>密钥生成</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">umask 077</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wg genkey | tee privatekey | wg pubkey &gt; publickey</span><br></span></code></pre></div></div>
</li>
<li>
<p>生成配置文件</p>
<blockquote>
<p>当客户端配置了AllowedIPs = 0.0.0.0/0代理所有流量，服务器端必须添加PostUp的iptables来转发流量客户端才能正常使用，是支持多个Peer的也就是能同时配置多个远程端点。</p>
<p><code>AllowedIPs</code>通俗的来说就是本地需要经过wireguard的ip网段都要配置上</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">umask 077</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/wireguard/wg0.conf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Interface]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PrivateKey = `cat privatekey`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Address = 172.16.100.1/24	#地址须唯一</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ListenPort = 51820	#udp端口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostUp = sysctl -w net.ipv4.ip_forward=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostUp   = iptables -A FORWARD -i %i -j ACCEPT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostUp   = iptables -A FORWARD -o %i -j ACCEPT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = sysctl -w net.ipv4.ip_forward=0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -D FORWARD -i %i -j ACCEPT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -D FORWARD -o %i -j ACCEPT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Peer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PublicKey = &lt;客户端的publickey&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AllowedIPs = 172.16.100.2/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
</li>
<li>
<p>启动wireguard</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wg-quick up wg0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#设置开机自启</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl enable wg-quick@wg0</span><br></span></code></pre></div></div>
</li>
<li>
<p>停止wireguard</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wg-quick down wg0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#删除开机自启</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl disable wg-quick@wg0</span><br></span></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="客户端安装">客户端安装<a href="https://www.gavintan.cn/blog/wireguard#%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%AE%89%E8%A3%85" class="hash-link" aria-label="客户端安装的直接链接" title="客户端安装的直接链接">​</a></h2>
<blockquote>
<p>客户端需要全局流量走wireguard需要添加AllowedIPs = 0.0.0.0/0配置，不行全局流量都走wireguard只需要在AllowedIPs 配置需要经过vpn的网段或ip即可</p>
<p>如果是在windows上客户端打通隧道需要在连接局域网的网卡上设置Internet连接共享允许本地wireguard Tunnel创建的网卡</p>
</blockquote>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[Interface]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PrivateKey = &lt;客户端的privatekey&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Address = 172.16.100.2/24	#地址须唯一且同服务器为同一网段</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DNS = 8.8.8.8,1.1.1.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Peer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PublicKey = &lt;服务器的publickey&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AllowedIPs = 0.0.0.0/0,::/0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Endpoint = &lt;server&gt;:51820</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PersistentKeepalive = 25	#当服务器位于NAT或防火墙后面时需要配置keepalive</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="疑难解答">疑难解答<a href="https://www.gavintan.cn/blog/wireguard#%E7%96%91%E9%9A%BE%E8%A7%A3%E7%AD%94" class="hash-link" aria-label="疑难解答的直接链接" title="疑难解答的直接链接">​</a></h2>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="使用动态域名之类的ip发生变化不会自动重连">使用动态域名之类的ip发生变化不会自动重连<a href="https://www.gavintan.cn/blog/wireguard#%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E4%B9%8B%E7%B1%BB%E7%9A%84ip%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96%E4%B8%8D%E4%BC%9A%E8%87%AA%E5%8A%A8%E9%87%8D%E8%BF%9E" class="hash-link" aria-label="使用动态域名之类的ip发生变化不会自动重连的直接链接" title="使用动态域名之类的ip发生变化不会自动重连的直接链接">​</a></h4>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://git.zx2c4.com/wireguard-tools /usr/share/wireguard-tools</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/systemd/system/wireguard_reresolve-dns.timer</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Unit]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Description=Periodically reresolve DNS of all WireGuard endpoints</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Timer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OnCalendar=*:*:0/30</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Install]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WantedBy=timers.target</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/systemd/system/wireguard_reresolve-dns.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Unit]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Description=Reresolve DNS of all WireGuard endpoints</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Wants=network-online.target</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">After=network-online.target</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Service]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Type=oneshot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ExecStart=/bin/sh -c 'for i in /etc/wireguard/*.conf; do /usr/share/wireguard-tools/contrib/reresolve-dns/reresolve-dns.sh "$i"; done'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl enable wireguard_reresolve-dns.timer --now</span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="遇到运营商udp限速qos">遇到运营商UDP限速（QOS）<a href="https://www.gavintan.cn/blog/wireguard#%E9%81%87%E5%88%B0%E8%BF%90%E8%90%A5%E5%95%86udp%E9%99%90%E9%80%9Fqos" class="hash-link" aria-label="遇到运营商UDP限速（QOS）的直接链接" title="遇到运营商UDP限速（QOS）的直接链接">​</a></h4>
<p>WireGuard 在国内网络环境下会遇到一个致命的问题：UDP 封锁/限速。虽然通过 WireGuard 可以在隧道内传输任何基于 IP 的协议（TCP、UDP、ICMP、SCTP、IPIP、GRE 等），但 WireGuard 隧道本身是通过 UDP 协议进行通信的，而国内运营商几乎全部采取一刀切的手段：对 UDP 进行限速甚至封锁。</p>
<p>解决方法：使用<a href="https://github.com/dndx/phantun" target="_blank" rel="noopener noreferrer">Phantun</a>将UDP伪装成TCP连接。</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="服务端">服务端：<a href="https://www.gavintan.cn/blog/wireguard#%E6%9C%8D%E5%8A%A1%E7%AB%AF" class="hash-link" aria-label="服务端：的直接链接" title="服务端：的直接链接">​</a></h5>
<p>假设服务端的公网 IP 地址是 <code>121.36.134.95</code>，WireGuard 监听端口是 <code>51822</code>。首先修改配置文件 <code>/etc/wireguard/wg0.conf</code>，在 <code>[Interface]</code> 中添加以下配置：</p>
<blockquote>
<p>如果你使用 ping 或者 dig 等工具（小数据包）测试 WireGuard 隧道能够正常工作，但浏览器或者远程桌面（大数据包）却无法正常访问，很有可能是 MTU 的问题，你需要将 MTU 的值调小一点。</p>
<p>Phantun 官方建议将 MTU 的值设为 <code>1428</code>（假设物理网卡的 MTU 是 1500），但经我测试是有问题的。建议直接将 MTU 设置为最低值 <code>1280</code>，然后渐渐增加，直到无法正常工作为止，此时你的 MTU 就是最佳值。</p>
</blockquote>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MTU = 1300</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &amp;&gt; /var/log/phantun_server.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = killall phantun_server || true</span><br></span></code></pre></div></div>
<p>你需要将 eth0 替换为你服务端的物理网卡名。MTU 值先不管，后面再告诉大家调试方法。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2</span><br></span></code></pre></div></div>
<p>这条 iptables 规则表示将 <code>4567</code> 端口的入站流量 DNAT 为 TUN 网卡的 IP 地址。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &amp;&gt; /var/log/phantun_server.log &amp;</span><br></span></code></pre></div></div>
<p>这里会启动 phantun_server，监听在 <code>4567</code> 端口，并将 UDP 数据包转发到 WireGuard。</p>
<p>服务端完整的 WireGuard 配置：</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># local settings for Endpoint B</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Interface]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PrivateKey = QH1BJzIZcGo89ZTykxls4i2DKgvByUkHIBy3BES2gX8= </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Address = 10.0.0.2/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ListenPort = 51822</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MTU = 1300</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &amp;&gt; /var/log/phantun_server.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = killall phantun_server || true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># remote settings for Endpoint A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Peer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PublicKey = wXtD/VrRo92JHc66q4Ypmnd4JpMk7b1Sb0AcT+pJfwY= </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AllowedIPs = 10.0.0.1/32</span><br></span></code></pre></div></div>
<p>最后重启 WireGuard 即可：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ systemctl restart wg-quick@wg0</span><br></span></code></pre></div></div>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="客户端">客户端：<a href="https://www.gavintan.cn/blog/wireguard#%E5%AE%A2%E6%88%B7%E7%AB%AF" class="hash-link" aria-label="客户端：的直接链接" title="客户端：的直接链接">​</a></h5>
<p>假设客户端的 WireGuard 监听端口是 <code>51821</code>。首先修改配置文件 <code>/etc/wireguard/wg0.conf</code>，在 <code>[Interface]</code> 中添加以下配置：</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MTU = 1300</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = killall phantun_client || true</span><br></span></code></pre></div></div>
<p>你需要将 eth0 替换为你服务端的物理网卡名。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span></code></pre></div></div>
<p>这条 iptables 规则表示对来自 <code>192.168.200.2</code>（TUN 网卡） 的出站流量进行 MASQUERADE。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span></code></pre></div></div>
<p>这里会启动 phantun_client，监听在 <code>4567</code> 端口，并与服务端建立连接，将伪装的 TCP 数据包传送给服务端。</p>
<p>除此之外还需要修改 WireGuard peer 的 Endpoint，将其修改为 127.0.0.1:4567。</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Endpoint = 127.0.0.1:4567</span><br></span></code></pre></div></div>
<p>客户端完整的 WireGuard 配置：</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># local settings for Endpoint A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Interface]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PrivateKey = 0Pyz3cIg2gRt+KxZ0Vm1PvSIU+0FGufPIzv92jTyGWk=</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Address = 10.0.0.1/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ListenPort = 51821</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MTU = 1300</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = killall phantun_client || true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># remote settings for Endpoint B</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Peer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PublicKey = m40NDb5Cqtb78b1DVwY1+kxbG2yEcRhxlrLm/DlPpz8=</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Endpoint = 127.0.0.1:4567</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AllowedIPs = 10.0.0.2/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PersistentKeepalive = 25</span><br></span></code></pre></div></div>
<p>最后重启 WireGuard 即可：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ systemctl restart wg-quick@wg0</span><br></span></code></pre></div></div>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="客户端多服务端">客户端（多服务端）：<a href="https://www.gavintan.cn/blog/wireguard#%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%A4%9A%E6%9C%8D%E5%8A%A1%E7%AB%AF" class="hash-link" aria-label="客户端（多服务端）：的直接链接" title="客户端（多服务端）：的直接链接">​</a></h5>
<p>如果客户端想和多个服务端建立连接，则新增的服务端配置如下：</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4568 --remote xxxx:4567 --tun-local=192.168.202.1 --tun-peer=192.168.202.2 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.202.2 -j MASQUERADE</span><br></span></code></pre></div></div>
<p>本地监听端口需要选择一个与之前不同的端口，同理，TUN 网卡的地址也需要修改。最终的配置如下：</p>
<div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># local settings for Endpoint A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Interface]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PrivateKey = 0Pyz3cIg2gRt+KxZ0Vm1PvSIU+0FGufPIzv92jTyGWk=</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Address = 10.0.0.1/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ListenPort = 51821</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MTU = 1300</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4568 --remote xxxx:4567 --tun-local=192.168.202.1 --tun-peer=192.168.202.2 &amp;&gt; /var/log/phantun_client.log &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.202.2 -j MASQUERADE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PostDown = killall phantun_client || true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># remote settings for Endpoint B</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[Peer]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PublicKey = m40NDb5Cqtb78b1DVwY1+kxbG2yEcRhxlrLm/DlPpz8=</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Endpoint = 127.0.0.1:4567</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AllowedIPs = 10.0.0.2/32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PersistentKeepalive = 25</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>WireGuard</category>
            <category>WG</category>
        </item>
    </channel>
</rss>