Virtual San Free - HA

Software-based VM-centric and flash-friendly VM storage + free version

Moderators: anton (staff), art (staff), Max (staff), Anatoly (staff)

the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Thu Jan 06, 2022 11:59 am

Hello, I trying to create HA device and have some problems with heartbeat

This is the script

Code: Select all

param($addr="192.168.110.2", $port=3261, $user="root", $password="starwind",
	$addr2="192.168.110.3", $port2=$port, $user2=$user, $password2=$password,
#common
	$initMethod="Clear",
	$size=12251,
	$sectorSize=512,
	$failover=0,
#primary node
	$imagePath="My computer\D\vm-srv-ftp",
	$imageName="node-01-vm-srv-ftp",
	$createImage=$true,
	$storageName="",
	$targetAlias="node-01-vm-srv-ftp",
	$autoSynch=$true,
	$poolName="pool1",
	$syncSessionCount=1,
	$aluaOptimized=$true,
	$cacheMode="wb",
	$cacheSize=128,
	$syncInterface="#p2=192.168.230.2:3260" -f $addr2,
	$hbInterface="#p2=192.168.8.43:3260,192.168.110.3:3260" -f $addr2,
	$createTarget=$true,
#secondary node
	$imagePath2="My computer\D\vm-srv-ftp",
	$imageName2="node-02-vm-srv-ftp",
	$createImage2=$true,
	$storageName2="",
	$targetAlias2="node-02-vm-srv-ftp",
	$autoSynch2=$true,
	$poolName2="pool1",
	$syncSessionCount2=1,
	$aluaOptimized2=$false,
	$cacheMode2=$cacheMode,
	$cacheSize2=$cacheSize,
	$syncInterface2="#p1=192.168.230.1:3260" -f $addr,
	$hbInterface2="#p1=192.168.8.3:3260,192.168.110.2:3360" -f $addr,
	$createTarget2=$true
	)
	
Import-Module StarWindX

try
{
	Enable-SWXLog

	$server = New-SWServer -host $addr -port $port -user $user -password $password

	$server.Connect()

	$firstNode = new-Object Node

	$firstNode.HostName = $addr
	$firstNode.HostPort = $port
	$firstNode.Login = $user
	$firstNode.Password = $password
	$firstNode.ImagePath = $imagePath
	$firstNode.ImageName = $imageName
	$firstNode.Size = $size
	$firstNode.CreateImage = $createImage
	$firstNode.StorageName = $storageName
	$firstNode.TargetAlias = $targetAlias
	$firstNode.AutoSynch = $autoSynch
	$firstNode.SyncInterface = $syncInterface
	$firstNode.HBInterface = $hbInterface
	$firstNode.PoolName = $poolName
	$firstNode.SyncSessionCount = $syncSessionCount
	$firstNode.ALUAOptimized = $aluaOptimized
	$firstNode.CacheMode = $cacheMode
	$firstNode.CacheSize = $cacheSize
	$firstNode.FailoverStrategy = $failover
	$firstNode.CreateTarget = $createTarget
    
	#
	# device sector size. Possible values: 512 or 4096(May be incompatible with some clients!) bytes. 
	#
	$firstNode.SectorSize = $sectorSize
    
	$secondNode = new-Object Node

	$secondNode.HostName = $addr2
	$secondNode.HostPort = $port2
	$secondNode.Login = $user2
	$secondNode.Password = $password2
	$secondNode.ImagePath = $imagePath2
	$secondNode.ImageName = $imageName2
	$secondNode.CreateImage = $createImage2
	$secondNode.StorageName = $storageName2
	$secondNode.TargetAlias = $targetAlias2
	$secondNode.AutoSynch = $autoSynch2
	$secondNode.SyncInterface = $syncInterface2
	$secondNode.HBInterface = $hbInterface2
	$secondNode.SyncSessionCount = $syncSessionCount2
	$secondNode.ALUAOptimized = $aluaOptimized2
	$secondNode.CacheMode = $cacheMode2
	$secondNode.CacheSize = $cacheSize2
	$secondNode.FailoverStrategy = $failover
	$secondNode.CreateTarget = $createTarget2
        
	$device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -initMethod $initMethod
    
	while ($device.SyncStatus -ne [SwHaSyncStatus]::SW_HA_SYNC_STATUS_SYNC)
	{
		$syncPercent = $device.GetPropertyValue("ha_synch_percent")
	        Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow

		Start-Sleep -m 2000

		$device.Refresh()
	}
}
catch
{
	Write-Host $_ -foreground red 
}
finally
{
	$server.Disconnect()
}

On node-01 everything seems to be good

Image


but on the node-02 I have heartbeat problem

Image


What's wrong ? I use free version
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Thu Jan 06, 2022 12:45 pm

Hi,

Try pinging the IP in question from the 01.
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Thu Jan 06, 2022 1:23 pm

Hello, I changed the networks and recreate HAImage. Now it looks like this:

Code: Select all

param($addr="192.168.110.2", $port=3261, $user="root", $password="starwind",
	$addr2="192.168.110.3", $port2=$port, $user2=$user, $password2=$password,
#common
	$initMethod="Clear",
	$size=300000,
	$sectorSize=512,
	$failover=0,
#primary node
	$imagePath="My computer\D\vm-storage",
	$imageName="node-01-vm-storage",
	$createImage=$true,
	$storageName="",
	$targetAlias="node-01-vm-storage",
	$autoSynch=$true,
	$poolName="pool1",
	$syncSessionCount=1,
	$aluaOptimized=$true,
	$cacheMode="wb",
	$cacheSize=128,
	$syncInterface="#p2=192.168.110.3:3260" -f $addr2,
	$hbInterface="#p2=192.168.8.43:3260,192.168.230.3:3260" -f $addr2,
	$createTarget=$true,
#secondary node
	$imagePath2="My computer\D\vm-storage",
	$imageName2="node-02-vm-storage",
	$createImage2=$true,
	$storageName2="",
	$targetAlias2="node-02-vm-storage",
	$autoSynch2=$true,
	$poolName2="pool1",
	$syncSessionCount2=1,
	$aluaOptimized2=$false,
	$cacheMode2=$cacheMode,
	$cacheSize2=$cacheSize,
	$syncInterface2="#p1=192.168.110.2:3260" -f $addr,
	$hbInterface2="#p1=192.168.8.3:3260,192.168.230.2:3360" -f $addr,
	$createTarget2=$true
	)
	
Import-Module StarWindX

try
{
	Enable-SWXLog

	$server = New-SWServer -host $addr -port $port -user $user -password $password

	$server.Connect()

	$firstNode = new-Object Node

	$firstNode.HostName = $addr
	$firstNode.HostPort = $port
	$firstNode.Login = $user
	$firstNode.Password = $password
	$firstNode.ImagePath = $imagePath
	$firstNode.ImageName = $imageName
	$firstNode.Size = $size
	$firstNode.CreateImage = $createImage
	$firstNode.StorageName = $storageName
	$firstNode.TargetAlias = $targetAlias
	$firstNode.AutoSynch = $autoSynch
	$firstNode.SyncInterface = $syncInterface
	$firstNode.HBInterface = $hbInterface
	$firstNode.PoolName = $poolName
	$firstNode.SyncSessionCount = $syncSessionCount
	$firstNode.ALUAOptimized = $aluaOptimized
	$firstNode.CacheMode = $cacheMode
	$firstNode.CacheSize = $cacheSize
	$firstNode.FailoverStrategy = $failover
	$firstNode.CreateTarget = $createTarget
    
	#
	# device sector size. Possible values: 512 or 4096(May be incompatible with some clients!) bytes. 
	#
	$firstNode.SectorSize = $sectorSize
    
	$secondNode = new-Object Node

	$secondNode.HostName = $addr2
	$secondNode.HostPort = $port2
	$secondNode.Login = $user2
	$secondNode.Password = $password2
	$secondNode.ImagePath = $imagePath2
	$secondNode.ImageName = $imageName2
	$secondNode.CreateImage = $createImage2
	$secondNode.StorageName = $storageName2
	$secondNode.TargetAlias = $targetAlias2
	$secondNode.AutoSynch = $autoSynch2
	$secondNode.SyncInterface = $syncInterface2
	$secondNode.HBInterface = $hbInterface2
	$secondNode.SyncSessionCount = $syncSessionCount2
	$secondNode.ALUAOptimized = $aluaOptimized2
	$secondNode.CacheMode = $cacheMode2
	$secondNode.CacheSize = $cacheSize2
	$secondNode.FailoverStrategy = $failover
	$secondNode.CreateTarget = $createTarget2
        
	$device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -initMethod $initMethod
    
	while ($device.SyncStatus -ne [SwHaSyncStatus]::SW_HA_SYNC_STATUS_SYNC)
	{
		$syncPercent = $device.GetPropertyValue("ha_synch_percent")
	        Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow

		Start-Sleep -m 2000

		$device.Refresh()
	}
}
catch
{
	Write-Host $_ -foreground red 
}
finally
{
	$server.Disconnect()
}

Image

Image

I can ping from 01 to 02 and from 02 to 01 on all networks
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Thu Jan 06, 2022 1:53 pm

192.168.230.2 is located on 192.168.110.2. Try pinging 192.168.110.2 from 192.168.110.3.
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Thu Jan 06, 2022 2:08 pm

Yes, 192.168.230.2 and 192.168.110.2 are on the same server (01)

Ping is working as I said. Below from 02 to 01

Image
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Thu Jan 06, 2022 2:32 pm

1. Do you have the IP address in question listed among the networks on 01? In StarWind Management Console, go to Networks tab.
2. Do you have iSCSI File Server role installed?
3. Try removing the HB interface and re-adding it back. You can modify the respective _HA.swdsk while the service is stopped.
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Thu Jan 06, 2022 3:04 pm

Hey, found the problem.

Image

Now everything is working fine ;) Thanks
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Thu Jan 06, 2022 3:27 pm

Glad to know that everything is operational now. Thank you!
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Fri Jan 07, 2022 3:27 pm

Could you tell me how can I add next HAImages on the same target ? I mean next HA image with different lun on the same target ?

Now I trying to set second image, it's look like this, but when the syncro was finished it start it again..

First I use this code

Code: Select all

param($addr="192.168.110.2", $port=3261, $user="root", $password="starwind",
	$addr2="192.168.110.3", $port2=$port, $user2=$user, $password2=$password,
#common
	$initMethod="Clear",
	$size=3000,
	$sectorSize=512,
	$failover=0,
#primary node
	$imagePath="My computer\D\vm-storage",
	$imageName="node-01-vm-storage",
	$createImage=$true,
	$storageName="",
	$targetAlias="node-01-vm-storage",
	$autoSynch=$true,
	$poolName="pool1",
	$syncSessionCount=1,
	$aluaOptimized=$true,
	$cacheMode="wb",
	$cacheSize=128,
	$syncInterface="#p2=192.168.110.3:3260" -f $addr2,
	$hbInterface="#p2=192.168.231.3:3260,192.168.140.3:3260" -f $addr2,
	$createTarget=$true,
#secondary node
	$imagePath2="My computer\D\vm-storage",
	$imageName2="node-02-vm-storage",
	$createImage2=$true,
	$storageName2="",
	$targetAlias2="node-02-vm-storage",
	$autoSynch2=$true,
	$poolName2="pool1",
	$syncSessionCount2=1,
	$aluaOptimized2=$false,
	$cacheMode2=$cacheMode,
	$cacheSize2=$cacheSize,
	$syncInterface2="#p1=192.168.110.2:3260" -f $addr,
	$hbInterface2="#p1=192.168.231.2:3260,192.168.140.2:3260" -f $addr,
	$createTarget2=$true
	)
	
Import-Module StarWindX

try
{
	Enable-SWXLog

	$server = New-SWServer -host $addr -port $port -user $user -password $password

	$server.Connect()

	$firstNode = new-Object Node

	$firstNode.HostName = $addr
	$firstNode.HostPort = $port
	$firstNode.Login = $user
	$firstNode.Password = $password
	$firstNode.ImagePath = $imagePath
	$firstNode.ImageName = $imageName
	$firstNode.Size = $size
	$firstNode.CreateImage = $createImage
	$firstNode.StorageName = $storageName
	$firstNode.TargetAlias = $targetAlias
	$firstNode.AutoSynch = $autoSynch
	$firstNode.SyncInterface = $syncInterface
	$firstNode.HBInterface = $hbInterface
	$firstNode.PoolName = $poolName
	$firstNode.SyncSessionCount = $syncSessionCount
	$firstNode.ALUAOptimized = $aluaOptimized
	$firstNode.CacheMode = $cacheMode
	$firstNode.CacheSize = $cacheSize
	$firstNode.FailoverStrategy = $failover
	$firstNode.CreateTarget = $createTarget
    
	#
	# device sector size. Possible values: 512 or 4096(May be incompatible with some clients!) bytes. 
	#
	$firstNode.SectorSize = $sectorSize
    
	$secondNode = new-Object Node

	$secondNode.HostName = $addr2
	$secondNode.HostPort = $port2
	$secondNode.Login = $user2
	$secondNode.Password = $password2
	$secondNode.ImagePath = $imagePath2
	$secondNode.ImageName = $imageName2
	$secondNode.CreateImage = $createImage2
	$secondNode.StorageName = $storageName2
	$secondNode.TargetAlias = $targetAlias2
	$secondNode.AutoSynch = $autoSynch2
	$secondNode.SyncInterface = $syncInterface2
	$secondNode.HBInterface = $hbInterface2
	$secondNode.SyncSessionCount = $syncSessionCount2
	$secondNode.ALUAOptimized = $aluaOptimized2
	$secondNode.CacheMode = $cacheMode2
	$secondNode.CacheSize = $cacheSize2
	$secondNode.FailoverStrategy = $failover
	$secondNode.CreateTarget = $createTarget2
        
	$device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -initMethod $initMethod
    
	while ($device.SyncStatus -ne [SwHaSyncStatus]::SW_HA_SYNC_STATUS_SYNC)
	{
		$syncPercent = $device.GetPropertyValue("ha_synch_percent")
	        Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow

		Start-Sleep -m 2000

		$device.Refresh()
	}
}
catch
{
	Write-Host $_ -foreground red 
}
finally
{
	$server.Disconnect()
}

Start-Sleep -Seconds 10
Then this

Code: Select all

param($addr="192.168.110.2", $port=3261, $user="root", $password="starwind",
	$addr2="192.168.110.3", $port2=$port, $user2=$user, $password2=$password,
#common
	$initMethod="Clear",
	$size=3000,
	$sectorSize=512,
	$failover=0,
#primary node
	$imagePath="My computer\D\vm-storage",
	$imageName="node-01-vm-storage1",
	$createImage=$true,
	$storageName="",
	$targetAlias="node-01-vm-storage",
	$autoSynch=$true,
	$poolName="pool1",
	$syncSessionCount=1,
	$aluaOptimized=$true,
	$cacheMode="wb",
	$cacheSize=128,
	$syncInterface="#p2=192.168.110.3:3260" -f $addr2,
	$hbInterface="#p2=192.168.231.3:3260,192.168.140.3:3260" -f $addr2,
	$createTarget=$false,
#secondary node
	$imagePath2="My computer\D\vm-storage",
	$imageName2="node-02-vm-storage1",
	$createImage2=$true,
	$storageName2="",
	$targetAlias2="node-02-vm-storage",
	$autoSynch2=$true,
	$poolName2="pool1",
	$syncSessionCount2=1,
	$aluaOptimized2=$false,
	$cacheMode2=$cacheMode,
	$cacheSize2=$cacheSize,
	$syncInterface2="#p1=192.168.110.2:3260" -f $addr,
	$hbInterface2="#p1=192.168.231.2:3260,192.168.140.2:3260" -f $addr,
	$createTarget2=$false
	)
	
Import-Module StarWindX

try
{
	Enable-SWXLog

	$server = New-SWServer -host $addr -port $port -user $user -password $password

	$server.Connect()

	$firstNode = new-Object Node

	$firstNode.HostName = $addr
	$firstNode.HostPort = $port
	$firstNode.Login = $user
	$firstNode.Password = $password
	$firstNode.ImagePath = $imagePath
	$firstNode.ImageName = $imageName
	$firstNode.Size = $size
	$firstNode.CreateImage = $createImage
	$firstNode.StorageName = $storageName
	$firstNode.TargetAlias = $targetAlias
	$firstNode.AutoSynch = $autoSynch
	$firstNode.SyncInterface = $syncInterface
	$firstNode.HBInterface = $hbInterface
	$firstNode.PoolName = $poolName
	$firstNode.SyncSessionCount = $syncSessionCount
	$firstNode.ALUAOptimized = $aluaOptimized
	$firstNode.CacheMode = $cacheMode
	$firstNode.CacheSize = $cacheSize
	$firstNode.FailoverStrategy = $failover
	$firstNode.CreateTarget = $createTarget
    
	#
	# device sector size. Possible values: 512 or 4096(May be incompatible with some clients!) bytes. 
	#
	$firstNode.SectorSize = $sectorSize
    
	$secondNode = new-Object Node

	$secondNode.HostName = $addr2
	$secondNode.HostPort = $port2
	$secondNode.Login = $user2
	$secondNode.Password = $password2
	$secondNode.ImagePath = $imagePath2
	$secondNode.ImageName = $imageName2
	$secondNode.CreateImage = $createImage2
	$secondNode.StorageName = $storageName2
	$secondNode.TargetAlias = $targetAlias2
	$secondNode.AutoSynch = $autoSynch2
	$secondNode.SyncInterface = $syncInterface2
	$secondNode.HBInterface = $hbInterface2
	$secondNode.SyncSessionCount = $syncSessionCount2
	$secondNode.ALUAOptimized = $aluaOptimized2
	$secondNode.CacheMode = $cacheMode2
	$secondNode.CacheSize = $cacheSize2
	$secondNode.FailoverStrategy = $failover
	$secondNode.CreateTarget = $createTarget2
        
	$device = Add-HADevice -server $server -firstNode $firstNode -secondNode $secondNode -initMethod $initMethod
    
	while ($device.SyncStatus -ne [SwHaSyncStatus]::SW_HA_SYNC_STATUS_SYNC)
	{
		$syncPercent = $device.GetPropertyValue("ha_synch_percent")
	        Write-Host "Synchronizing: $($syncPercent)%" -foreground yellow

		Start-Sleep -m 2000

		$device.Refresh()
	}
}
catch
{
	Write-Host $_ -foreground red 
}
finally
{
	$server.Disconnect()
}

Start-Sleep -Seconds 10

It's look like this, but as I said the synchronizing working all the time

Image
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Sat Jan 08, 2022 1:27 pm

It is not recommended to add the HA image to the same target.
Each HA needs its own target.
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Sat Jan 08, 2022 1:45 pm

Ok, understood. Have another question about synchronization. It's take so long on 30GB disk and 10Gb link. In performance I cannot see any traffic, whats the problem ?

Image
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Sat Jan 08, 2022 8:37 pm

Synchronization speed is not only about the network but the storage configuration. What is the underlying storage configuration?
the_extremist
Posts: 14
Joined: Thu Jan 06, 2022 11:51 am

Sat Jan 08, 2022 9:10 pm

RAID 10 on 4xSSD Samsung 870 EVO 1TB. HP 380 G9 with P840 raid controller
Servers are connected directly with 3 networks 10 GB each.
Iperf show about 9.5 Gbps
yaroslav (staff)
Staff
Posts: 2361
Joined: Mon Nov 18, 2019 11:11 am

Sat Jan 08, 2022 11:42 pm

Are they dedicated connections or used for anything else?
jackjohnson
Posts: 1
Joined: Wed Jan 26, 2022 10:01 am

Wed Jan 26, 2022 10:02 am

yaroslav (staff) wrote:Hi,

Try pinging the IP in question from the 01.
REALLY?
Post Reply